2010-02-19 63 views
1

我在python中寫異步ping域的服務。所以它必須能夠同時ping多個ip。我把它寫在epoll ioloop上,但是有丟包的問題。 當有很多同時發生的ICMP請求時,他們的回覆中有很多部分沒有到達我的服務器。什麼可能會導致這種情況,以及如何讓我的服務在不丟包的情況下同時ping多臺主機?asyn icmp ping的問題

感謝)

回答

0

你可能會具有的一個問題是由於這樣的事實,即是ICMP OSI模型的第3層,並且不使用一個端口進行通信。簡而言之,ICMP並不是真正爲此設計的。期望的行爲仍然是可能的,但也許你正在使用的IP協議棧正在阻礙,如果這是在Windows系統上,那麼100%確定這是你的問題。我會啓動Wireshark以確保您實際上正在接收數據包,如果是這種情況,那麼我會使用libpcap來跟蹤ICMP回覆。如果問題在於發送,則必須使用原始套接字並構建自己的ICMP數據包。

+0

我正在Python CentO上寫這個。 而我使用原始套接字來處理ICMP協議。 我嗅過包......現在可以說他們真的失去了網上的某個地方。我可以解決這個問題,而無需設置超時..或者我沒有另一種方式? 感謝您的快速回答)) – 2010-02-20 11:28:33

+0

問題是在更高級別的系統上具有100kBytes的所有服務器的ICMP更清晰。當我們移動到服務器與個人頻道問題消失 – 2010-03-14 11:34:56