代码拉取完成,页面将自动刷新
#导入所需的库
import socket
import threading
# 配置服务器参数
HOST = 'localhost'#设置服务器IP地址
PORT = 12345 #设置服务器端口
BUFFER_SIZE = 1024 #设置缓冲区大小
#创建客户端套接字列表
clients = []
# 处理客户端连接的函数
def handle_client(client_socket):
# 添加客户端套接字到列表
clients.append(client_socket)
try:
while True:
# 接收客户端发来的数据
data = client_socket.recv(BUFFER_SIZE)
if not data:
# 客户端断开连接
break
message = data.decode('utf-8')
print(f"Received message from client: {message}")
# 将消息广播给所有客户端
for sock in clients:
if sock != client_socket: # 不要将消息发送回发送者
sock.sendall(data)
except ConnectionResetError:
# 客户端强制关闭连接
print("Client disconnected unexpectedly.")
finally:
# 从列表中移除客户端套接字并关闭连接
clients.remove(client_socket)
client_socket.close()
def main():
try:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server_socket:
server_socket.bind((HOST, PORT))
server_socket.listen()
print(f"Server is listening on {HOST}:{PORT}")
while True:
client_socket, client_address = server_socket.accept()
print(f"Accepted connection from {client_address}")
# 为每个客户端创建一个新线程来处理请求
client_thread = threading.Thread(target=handle_client, args=(client_socket,))
client_thread.start()
except KeyboardInterrupt:
print("Server stopped by user interrupt.")
# 关闭所有客户端套接字
for sock in clients:
sock.close()
if __name__ == '__main__':
main()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。