我有一个即时消息应用程序,客户端用python编写。
连接到服务器的代码:
def connect(self, host, port, name):
host = str(host)
port = int(port)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.send('CONNECT:' + name)
print s.recv(1024)
return s
然后s将存储在self.socket中。
这是从服务器接收tcp数据包并将其打印到命令行的函数。
def chat(self):
while True:
data = self.socket.recv(4096)
if not data:
pass
else:
print data
所以在我看来它应该接收服务器发送和打印出来的所有内容,但它不会发生。谁知道如何将它变为现实?
答案 0 :(得分:0)
有一种select
函数监视多个流的方法,列出你需要处理的所有流,并为其使用select
函数,用户输入使用{{1和你希望聊天的所有套接字
检查一下:https://docs.python.org/2/library/select.html
但是,进行异步聊天的最佳方法是使用sys.stdin
,它会正常工作