我一直在Windows上使用jedie's python ^{} implementation。我可能错了,但是当从不同的线程ping两台计算机(A和B)时,ping将返回它接收到的第一个ping,而不考虑源。在
我在receive_one_ping中添加了一行代码:(第134行或类似行)recPacket, addr = my_socket.recvfrom(1024) # Existing line
print "dest: {}, recv addr: {}.".format(dest_addr, addr) # New line
这使我们可以看到我们正在接收的ping地址。(应该与目标IP相同,对吗?)在
测试:
ping1()ping已知的脱机IP(1.2.3.4),
ping2()ping已知的在线IP(192.168.1.1-我的路由器)
^{pr2}$
现在如果我们一起做的话:(为了简单起见,使用计时器)>>> from threading import Timer
>>> t1 = Timer(1, ping1)
>>> t2 = Timer(1, ping2)
>>> t1.start(); t2.start()
>>> Offline:Online: dest: 192.168.1.1, recv addr: ('192.168.1.1', 0).dest: 1.2.3.4, recv addr: ('192.168.1.1', 0).
0.0004508952953870.000423517514093
它有点破损(由于打印与线程的配合不好),所以这里有一点清晰:>>> Online: dest: 192.168.1.1, recv addr: ('192.168.1.1', 0).
Offline:dest: 1.2.3.4, re