我在Python中创建了一个连接到服务器并从中回复消息的应用程序。
一切正常,但过了一段时间后,客户端停止从服务器重新检索数据而没有任何错误。
它仍然停留在self.sock.recv 我尝试使用setblocking但似乎不起作用(默认情况下应该阻止吗?)
那是我的代码:
[...]
try:
print "Awaiting new data..."
data = self.sock.recv(5)
print "\n### " + data
if data:
data = data.decode('utf-8')
size = data[:4].lstrip("0")
data = data + self.sock.recv(int(size))
print data
else:
raise socket.error(errno.ENETUNREACH,"Network is unreachable")
#print "Size: "+str(size)
self.emit(self.signal, data)
except socket.error, (value,message):
print "# FAIL #: " + message
self.RUNNING = False
time.sleep(0.5)
[...]
控制台(客户端)中的最后消息是:
### 0015< Message here!!
Awaiting data...
控制台(SERVER)中的最后一条消息是:
2014-07-26 16:21:34,290 INFO >>> Sending to client
2014-07-26 16:21:34,291 INFO Message: Hello
2014-07-26 16:21:34,291 INFO 7
2014-07-26 16:21:34,291 INFO Queued
2014-07-26 16:21:34,292 INFO # SUCCESS #: 0005<Hello
2014-07-26 16:21:34,292 INFO Pending new status...
没有更多输出,没有错误,没有......但是服务器仍然向客户端发送(成功)消息。
有任何建议如何解决这个问题?
修改: 经过一些测试后,我发现只有当服务器在另一台计算机上时才会出现问题。 如果客户端和服务器在同一台计算机上,则可以正常工作。 可能是什么原因?