socket.recv(256为什么会返回None?

0 投票
1 回答
2648 浏览
提问于 2025-04-17 13:16

有两个Python程序,分别是 host1.pyhost2.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 这部分,看看会发生什么。

撰写回答