我正在用python构建多线程聊天客户端。当客户端首次连接到服务器时,服务器会向客户端发送欢迎消息。但是,此消息大多与输入部分搞混了。如果客户端部分的输入提示是“ Me:”,则输出将变成“ Me:您的昵称是Monique Williams”。(第二部分由服务器发送,服务器为连接的客户端指定一个随机的假名)。
如何防止这种情况?我知道这是因为多线程,所以我尝试使用time.sleep(),但是没有用。
import socket
import sys
from threading import Thread
import os
import time
HOST="192.168.1.33"
PORT=5000
try:
os.system("color A")
s = socket.socket()
s.connect((HOST,PORT))
def recv():
while True:
data = s.recv(1024)
if not data: sys.exit(0)
print(data.decode())
t1=Thread(target=recv)
t1.start()
while 1:
message = input("Me:")
s.send(message.encode('utf-8'))
except ConnectionRefusedError:
print("Server Error!")