把下面的代码改为流式接收并及时的转发出去
以下是将代码改为流式接收并及时转发的示例:
import socket
# 创建一个TCP/IP套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定套接字到端口
server_address = ('localhost', 10000)
print('开始启动服务器 {} 端口'.format(server_address))
sock.bind(server_address)
# 监听进来的连接
sock.listen(1)
while True:
# 等待连接
print('等待连接...')
connection, client_address = sock.accept()
print('客户端已连接:', client_address)
try:
while True:
# 从客户端接收数据
data = connection.recv(1024)
if data:
# 转发数据给其他客户端
for client_socket in client_sockets:
if client_socket != connection:
client_socket.sendall(data)
else:
break
finally:
# 清理连接
connection.close()
在上面的示例中,我们使用了一个 client_sockets 列表来存储所有连接到服务器的客户端套接字。每当收到一个客户端套接字时,我们将其添加到此列表中。在每个循环迭代中,我们使用 recv() 方法从连接中读取数据。如果收到任何数据,则将其转发给所有其他客户端套接字。如果没有收到数据,则说明连接已关闭,我们将其关闭并从 client_sockets 列表中删除
原文地址: https://www.cveoy.top/t/topic/d0X1 著作权归作者所有。请勿转载和采集!