Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python套接字被绞死-有时(客户端与flash连接)-Python 3.2_Python_Flash_Sockets - Fatal编程技术网

Python套接字被绞死-有时(客户端与flash连接)-Python 3.2

Python套接字被绞死-有时(客户端与flash连接)-Python 3.2,python,flash,sockets,Python,Flash,Sockets,我在Python(3.2)中体验到套接字的奇怪行为。客户端使用Flash连接到我的应用程序。大多数时候没有什么不寻常的事情,但有时python会以一种本不应该发生的方式崩溃——进入无限循环。下面我附加到日志中的循环代码和错误消息。Python挂起bytesRecived=sock.recv(64)并接收b''开关,该开关在日志中可见 代码: python的socket模块与BSD套接字API非常匹配 当套接字的远程端(这里是flash客户端)关闭时,本地端(这里是python服务器)上的recv

我在Python(3.2)中体验到套接字的奇怪行为。客户端使用Flash连接到我的应用程序。大多数时候没有什么不寻常的事情,但有时python会以一种本不应该发生的方式崩溃——进入无限循环。下面我附加到日志中的循环代码和错误消息。Python挂起
bytesRecived=sock.recv(64)
并接收
b''
开关,该开关在日志中可见

代码:


python的
socket
模块与BSD套接字API非常匹配

当套接字的远程端(这里是flash客户端)关闭时,本地端(这里是python服务器)上的
recv()
调用将返回一个空字符串(
'
)。无需继续处理,因为客户端将不再发送任何内容:通道已关闭

另一方面,由于套接字是非阻塞的,如果由于客户端在指定的时间限制(10秒)内未发送任何数据而发生套接字超时,则
recv()
调用将引发
socket.timeout
异常,您可以捕获并相应地处理该异常

您应该在
recv()
调用之后添加一个测试:

bytesRecived = sock.recv(64)
if not len(bytesRecived):
    raise InvalidSessionException('connection reset')

现在,我意识到有时候在我设置套接字超时之前,客户端可以断开连接。我想是这样的。你的解决办法会解决问题的。谢谢
CRITICAL: Hanged! buff='' bytes=[b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b''] timeout=10.0
bytesRecived = sock.recv(64)
if not len(bytesRecived):
    raise InvalidSessionException('connection reset')