我正在尝试使用Python套接字编程和Tkinter编写一个小型信使。客户端发送到服务器的消息必须立即发送到所有客户端(已接受的套接字)。但是,我的代码中发生的事情是服务器将从其他客户端发送的所有消息存储在某种缓冲区中,并在该客户端发送一些消息时将它们全部发送出去。
我提供了一张图片来说清楚:
我的客户端代码如下所示:
s.settimeout(1)
while True:
while True:
try:
data = s.recv(1024)
insertText(2, data.decode('utf-8'))
except socket.timeout as e:
break
base.mainloop()
我的服务器代码如下:
def open_conn_thread(conn, addr):
# conn.sendall(str.encode('this is test'))
reply = ''
if addr not in clients:
clients.append(conn)
print(clients)
while True:
data= conn.recv(4096)
reply = data.decode('utf-8')
reply = 'Server Output: ' + reply
for c in clients:
print('sending to : ' , c)
c.sendall(str.encode(reply))
if not data:
break
conn.close()
while True:
conn, addr = s.accept()
print('connected to : ' , addr)
start_new_thread(open_conn_thread,(conn,addr))