2017-01-16 220 views
0

我已經爲我的linux機器編寫了一個C++工具,它接收UDP(OSC)數據包並立即將它們發回(這是它唯一的作用)。但似乎有一些丟棄的數據包。當我發送100個數據包到我的linux(來自另一臺機器)時,大多數情況下只返回64個數據包。我用tcpdump查看了傳入的數據包。它告訴我以下內容:Linux丟棄UDP數據包

64 packets captured 
64 packets received by filter 
0 packets dropped by kernel 

那麼它們在哪裏?

+0

*任何*主機都可以丟棄UDP數據報。 – EJP

+0

是的。但沒有丟下任何東西。至少輸出是這樣說的。 –

回答

0

UDP在設計上並不保證數據包到達目的地。丟失的數據包可能根本沒有到達您的機器,因此不會出現在傳入數據包中。 UDP主要用於流和遊戲,因爲丟失一些數據包並不重要。

如果你想確保所有的數據包到達,你應該使用TCP。

讓我知道這是否有幫助。

+0

是的。但爲什麼總是隻能到達64 Pakets?這似乎是一種網絡緩衝區問題? –

+0

我的不好,我沒有看到它始終是相同數量的數據包。我想這可能是幾件事情,從發送數據包的超時/有效性到緩衝區問題。 – Azeros