python socket.recv() 一直不停的返回空字符串,客户端怎么判断连接被断开?
2017-11-07 09:05
886 查看
之前写代码的时候, 发现socket的 recv 函数一直返回空字符串。
感觉很是奇怪,自己没有去设置阻塞模式,也就是默认的阻塞模式,为什么不阻塞在那里,而是要一直收到空呢?
去python的官网上仔细查看了这个函数的说明,托 防火长城 的福,等了半天,终于打开了这个美国的网站。
Receive data from the socket. The return value is a string representing the data received. The maximum amount of data to be received at once is specified by bufsize. See the Unix manual page recv(2) for
the meaning of the optional argument flags; it defaults to zero.
Note
For best match with hardware and network realities, the value of bufsize should be a relatively small power of 2, for example, 4096.
就这么短短的一段话,并没有说明重复收到空字符串是咋回事。 因为服务端是别人写的,我一直不得解释。 后面我自己写了个服务端,不小心把服务端代码写错,半途崩溃了,客户端又出现了这样的问题。
经过测试,发现通道断开或者close之后,就会一直收到空字符串。 而不是所谓的-1 或者报异常。这个跟C 和java等其他语言很不一样。
我后续仔细浏览了整个socket文档,一直没有发现通道断开后会出现的情况。 老外的文档其实写的也不是那么仔细。至少这个点没有写。
百度了许久没有找到这个答案,于是我自己写出来,希望可以给迷茫在这个点上的孩子一点光亮。
如有其他问题,可以留言。
感觉很是奇怪,自己没有去设置阻塞模式,也就是默认的阻塞模式,为什么不阻塞在那里,而是要一直收到空呢?
去python的官网上仔细查看了这个函数的说明,托 防火长城 的福,等了半天,终于打开了这个美国的网站。
socket.
recv(bufsize[, flags])
Receive data from the socket. The return value is a string representing the data received. The maximum amount of data to be received at once is specified by bufsize. See the Unix manual page recv(2) for
the meaning of the optional argument flags; it defaults to zero.
Note
For best match with hardware and network realities, the value of bufsize should be a relatively small power of 2, for example, 4096.
就这么短短的一段话,并没有说明重复收到空字符串是咋回事。 因为服务端是别人写的,我一直不得解释。 后面我自己写了个服务端,不小心把服务端代码写错,半途崩溃了,客户端又出现了这样的问题。
经过测试,发现通道断开或者close之后,就会一直收到空字符串。 而不是所谓的-1 或者报异常。这个跟C 和java等其他语言很不一样。
我后续仔细浏览了整个socket文档,一直没有发现通道断开后会出现的情况。 老外的文档其实写的也不是那么仔细。至少这个点没有写。
百度了许久没有找到这个答案,于是我自己写出来,希望可以给迷茫在这个点上的孩子一点光亮。
如有其他问题,可以留言。
相关文章推荐
- 客户端怎么判断Socket连接已与服务器断开
- 客户端怎么判断Socket连接已与服务器断开
- (笔记)Linux服务器中判断客户端socket断开连接的方法
- 服务器中判断客户端socket断开连接的方法
- 服务器中判断客户端socket断开连接的方法
- C# socket服务端判断 客户端已经断开连接的一个小办法
- socket怎么判断客户端与服务器是否断开
- 服务器中判断客户端socket断开连接的方法【转】
- 服务器中判断客户端socket断开连接的方法
- 服务器中判断客户端socket断开连接的方法
- 服务器中判断客户端socket断开连接的方法
- 服务器中判断客户端socket断开连接的方法
- 【VS开发】如何判断客户端SOCKET已经断开连接?
- unix domain socket判断客户端断开连接
- 服务器中判断客户端socket断开连接的方法
- 服务器中判断客户端socket断开连接的方法
- socket的客户端判断连接是否正常
- python 使用socket客户端向服务端传参,调用指定函数并返回值给客户端
- java中判断socket服务器端是否断开连接 [经典]
- java中判断socket网络远端是否断开连接