之前写代码的时候, 发现socket的 recv 函数一直返回空字符串。
感觉很是奇怪,自己没有去设置阻塞模式,也就是默认的阻塞模式,为什么不阻塞在那里,而是要一直收到空呢?
去python的官网上仔细查看了这个函数的说明,托 防火长城 的福,等了半天,终于打开了这个美国的网站。
就这么短短的一段话,并没有说明重复收到空字符串是咋回事。 因为服务端是别人写的,我一直不得解释。 后面我自己写了个服务端,不小心把服务端代码写错,半途崩溃了,客户端又出现了这样的问题。
经过测试,发现通道断开或者close之后,就会一直收到空字符串。 而不是所谓的-1 或者报异常。这个跟C 和java等其他语言很不一样。
我后续仔细浏览了整个socket文档,一直没有发现通道断开后会出现的情况。 老外的文档其实写的也不是那么仔细。至少这个点没有写。