用户:
威武的潘达熊mIca查看:1 回复:2 评论:1 创建时间:2023-08-30T22:23:03
【作品展示】

【作品介绍】
可以和别人说话
【作品源代码】
import socket
import threading
# 服务器配置
server_ip = '127.0.0.1'
server_port = 8888
# 连接列表和锁
connections = []
lock = threading.Lock()
# 广播消息给所有连接
def broadcast_message(message):
with lock:
for conn in connections:
conn.send(message.encode('utf-8'))
# 处理客户端连接
def handle_connection(conn, addr):
print(f'New connection from: {addr}')
conn.send("Welcome to the chat room!".encode('utf-8'))
broadcast_message(f'{addr} has joined the chat.'.encode('utf-8'))
with lock:
connections.append(conn)
while True:
try:
data = conn.recv(1024).decode('utf-8')
if not data:
break
broadcast_message(f'{addr}: {data}'.encode('utf-8'))
except Exception as e:
print(f'Error receiving data from {addr}: {str(e)}')
break
with lock:
connections.remove(conn)
broadcast_message(f'{addr} has left the chat.'.encode('utf-8'))
conn.close()
# 启动服务器
def start_server():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((server_ip, server_port))
server_socket.listen(5)
print(f'Server started on {server_ip}:{server_port}')
while True:
conn, addr = server_socket.accept()
thread = threading.Thread(target=handle_connection, args=(conn, addr))
thread.start()
# 启动客户端
def start_client():
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((server_ip, server_port))
def receive_messages():
while True:
try:
data = client_socket.recv(1024).decode('utf-8')
print(data)
except Exception as e:
print(f'Error receiving data: {str(e)}')
break
receive_thread = threading.Thread(target=receive_messages)
receive_thread.start()
while True:
message = input('请输入:')
client_socket.send(message.encode('utf-8'))
# 在这里根据需要启动服务器或客户端
start_server()
# start_client()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn