发布时间:2019-09-05 07:07:48编辑:auto阅读(2032)
之前写代码的时候, 发现socket的 recv 函数一直返回空字符串。
感觉很是奇怪,自己没有去设置阻塞模式,也就是默认的阻塞模式,为什么不阻塞在那里,而是要一直收到空呢?
去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文档,一直没有发现通道断开后会出现的情况。 老外的文档其实写的也不是那么仔细。至少这个点没有写。
百度了许久没有找到这个答案,于是我自己写出来,希望可以给迷茫在这个点上的孩子一点光亮。
如有其他问题,可以留言。
上一篇: Python写的俄罗斯方块
下一篇: Centos 编译安装Python 2.
47863
46424
37314
34760
29332
25990
24945
19967
19564
18050
5806°
6433°
5948°
5975°
7080°
5926°
5963°
6456°
6418°
7798°