基本上,我一直在使用套接字和线程在一个简单的聊天室中工作。在我的客户端中,我可以接收和发送消息,我的问题是一个循环出现在另一个循环之前,因此,如果我要发送消息,则仅在发送消息后才可以接收数据。我希望它能够像其他聊天室一样工作,在我发送消息时可以在其中接收消息,任何帮助都会有很大帮助。这是我的基本客户:
import socket
import sys
###########
HOST = '25.0.18.52'
PORT = 9999
###########
name = input("Enter your name: ")
s = socket.socket()
s.connect((HOST,PORT))
while 1:
message = input("Message: ")
s.send("{}: {}".format(name, message).encode('utf-8'))
data = s.recv(1024)
a = data.decode("utf-8")
print(a)
您应该保留2个线程:一个用于侦听,另一个用于接收。在while
循环中,应删除侦听器部分,并将代码保留在其他线程中。这样,您可以同时接收并在控制台上键入内容。
def recv():
while True:
data = s.recv(1024).decode()
if not data: sys.exit(0)
print data
Thread(target=recv).start()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句