asyn icmp ping问题

时间:2010-02-19 21:32:26

标签: python ping icmp

我正在python中编写异步ping域的服务。所以它必须能够同时ping多个ip。我在epoll ioloop上写了它,但有丢包问题。 当有许多同时发生的ICMP请求时,很多部分回复都没有达到我的服务范围。可能导致这种情况的原因以及如何让我的服务同时ping多个主机而不丢包?

感谢)

1 个答案:

答案 0 :(得分:0)

您可能遇到的问题是由于ICMP是OSI模型的第3层并且不使用端口进行通信。简而言之,ICMP并非真正为此而设计。仍然可以实现所需的行为,但是您正在使用的IP堆栈可能会妨碍,如果这是在Windows系统上,那么100%确定这是您的问题。我会启动Wireshark以确保您实际上正在获取传入的数据包,如果是这种情况,那么我将使用libpcap来跟踪ICMP回复。如果问题在于发送,那么你将不得不使用原始套接字并构建自己的ICMP数据包。