Что происходит, когда сокет UDP не читается достаточно быстро? - PullRequest
2 голосов
/ 18 апреля 2011

Может произойти две вещи:

  • старые данные перезаписываются новыми с некоторым циклическим алгоритмом
  • новые данные просто отбрасываются, оставляя старые данные в буферах

Или что-то еще происходит?

EDIT:

Мне бы очень хотелось получить практический опыт, совет по поводу TCP или просто предположение - вот что я тоже могу дать себе:)

Ответы [ 3 ]

3 голосов
/ 18 апреля 2011

Более новые пакеты начинают отбрасываться после заполнения буфера сокета.

2 голосов
/ 18 апреля 2011

Это также зависит от аппаратного буфера.Если он заполнен, пакет просто игнорируется (= так же, как если бы он никогда не достигал устройства и эквивалентен, как если бы программный буфер в стеке IP читался недостаточно быстро).Оба буфера могут заполниться полностью независимо.Другими словами, вы можете потерять дейтаграмму на двух уровнях.

1 голос
/ 18 апреля 2011

Короткий ответ: вы потеряете несколько UDP-пакетов. Я надеюсь, что вы выбрали UDP, потому что можете жить с потерей данных. Если вы не можете, то TCP является ответом.

(Вы можете либо просто потерять данные, и все будет в порядке, либо реализовать собственный протокол подтверждения для повторной отправки пакетов, но тогда TCP будет выглядеть как ответ)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...