【发布时间】:2017-01-27 09:17:28
【问题描述】:
我有一个即时通讯应用,客户端是用 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
所以在我看来,它应该接收服务器发送并打印出来的所有内容,但它并没有发生。有谁知道如何将它变为现实?
【问题讨论】:
-
当你尝试跑步时到底发生了什么?
-
它有效,我可以向服务器发送消息,服务器接收它,但我无法在客户端接收消息。顺便说一句,它适用于 telnet 客户端。
-
在没有数据之前: print 'Error' 它开始无限打印它
-
我确实为 TCP 聊天编写了一个脚本,在我的脚本中,发送和接收是同时进行的,就像
socket.send和socket.recv的循环一样,它工作得很好。尝试这样做。 -
尝试编辑
while循环并在recv之前添加send。