Python TCP客户端在不活动后不会恢复数据

时间:2014-07-26 14:38:40

标签: sockets tcp client-server

我在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...

没有更多输出,没有错误,没有......但是服务器仍然向客户端发送(成功)消息。

有任何建议如何解决这个问题?

修改: 经过一些测试后,我发现只有当服务器在另一台计算机上时才会出现问题。 如果客户端和服务器在同一台计算机上,则可以正常工作。 可能是什么原因?

0 个答案:

没有答案