Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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套接字和recv()返回空数据_Python_Sockets_Tcp_Recv - Fatal编程技术网

python套接字和recv()返回空数据

python套接字和recv()返回空数据,python,sockets,tcp,recv,Python,Sockets,Tcp,Recv,我有一个c程序,它连接到python服务器,发送一个短字符串(少于100个字符),然后关闭套接字。它是以周期性的速度进行的 python服务器接受连接,生成线程,并在该线程中调用: data = sock.recv(4096) 数据通常是空的 在阅读了python手册页和一些堆栈溢出帖子(谢谢大家!)之后,我意识到问题在于c程序打开、写入、关闭和套接字的速度太快,以至于当python服务器接受并生成线程时,recv()不会返回任何数据,如前所述 问题是,我不知道这个问题的解决方法?我对c程序几

我有一个c程序,它连接到python服务器,发送一个短字符串(少于100个字符),然后关闭套接字。它是以周期性的速度进行的

python服务器接受连接,生成线程,并在该线程中调用:

data = sock.recv(4096)
数据通常是空的

在阅读了python手册页和一些堆栈溢出帖子(谢谢大家!)之后,我意识到问题在于c程序打开、写入、关闭和套接字的速度太快,以至于当python服务器接受并生成线程时,recv()不会返回任何数据,如前所述

问题是,我不知道这个问题的解决方法?我对c程序几乎没有控制权。哪种方法可以告诉python缓冲recv()的消息,即使另一方关闭了连接

(注意:我还没有在wireshark上验证我的预感,但这两个程序中的日志强烈表明c程序在大部分时间甚至调用recv()之前关闭。)


谢谢。

即使对方已关闭插座,您仍应收到发送的所有数据。很有可能您的python程序错误地处理了某些情况。您应该会收到另一端发送的每个字节的数据。谢谢David。我来查一查。服务器必须处理大约10个连接,但是accept/spawhthread/read循环在一个锁上序列化,因此实际上所有10个连接都是串行处理的。我正试图弄明白原作者为什么这样写。无论如何,这个输入是非常有价值的。C程序可能设置为0,然后立即发送/关闭。这是一种很好的释放数据的方法,有点像您所描述的,除了服务器应该看到重置,而不仅仅是没有数据。@BitDiot-至少锁会使完全删除线程繁殖变得容易。