所以我一直有與PCap庫的接收功能的問題。PCap庫問題與接收
我建立了一個echo服務器(在我的PC之外),它只需要一個數據包並將其轉向。因此,在我的應用程序中,我發送了一個數據包(工作正常),並嘗試使用pcap_next()接收響應數據包(來自echo服務器)。出於某種原因,即使Wireshark顯示數據包在不到1ms的時間內轉向,它也會等待1秒鐘才能收到帶有pcap_next()的數據包。因此,當我發送1000個數據包時,需要1000秒才能收到所有響應。
我想不通爲什麼這樣做,所以我試着切換到pcap_loop()。顯然現在它正在做更奇怪的事情。我發送1000個數據包,並接收1000個數據包,但不按照我預期的順序。
我希望這(這是我看到的Wireshark):
Send packet #1
Receive packet #1
Send packet #2
Receive packet #2
etc.
但是,這是我真正得到:
Send packet #1
Send packet #2
etc.
Wait 1 second
Receive packet #1
Receive packet #2
etc.
這是怎麼回事?
你嘗試過'setsockopt' w /'TCP_NODELAY'嗎? (把它隨機扔出去......我只是最近纔讀到這個,想知道它是否相關:http://en.wikipedia.org/wiki/Nagle%27s_algorithm) – HostileFork 2011-06-10 22:03:30
不適用。我正在發送原始的UDP數據包。 – theanine 2011-06-10 22:46:42