socket.recv(256为什么会返回None?
有两个Python程序,分别是 host1.py
和 host2.py
,它们可以同时运行并通过 socket
进行通信。
在 host1.py
中,有一行代码是 reciveSock = socket(AF_INET,SOCK_DGRAM)
。
而在 host2.py
中,有一行代码是 sendSocket = socket(AF_INET,SOCK_DGRAM)
。
这两个socket是互相绑定的。
在 host1.py
中,有一段代码是 -
try:
msgBacked = reciveSock.recv(256)
except:
pass
if( msgBacked is None):
print "isNone!"
结果确实打印出 isNone!
,这意味着 msgBacked
的值是 None
。
从 host2.py
发送到 host1.py
的所有信息都是通过 sendSocket.send("ACK")
发送的,这样就能确保发送的字符串中有值传输到 host1.py
。
那么,为什么 msgBacked
会是 None
呢?
1 个回答
3
很可能是 receiveSock.recv
在运行时出现了超时异常,也就是说它等了很久但没有收到数据,而 msgBacked
之前被设置成了 None
。你可以试着去掉 try .. except
这部分,看看会发生什么。