2017-01-16 4 views
0

Я написал инструмент C++ для моей Linux-машины, которая получает пакеты 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 Пакета? Это похоже на проблему с сетевым буфером? –

+0

Мой плохой, я не видел, что всегда было столько же пакетов. Я думаю, это может быть несколько вещей, от тайм-аута/действительности отправленных пакетов для проблем с буфером. – Azeros

Смежные вопросы