2016-05-28 4 views
0

У меня есть сокеты, которые слушают ICMP/UDP пакетов. Если сокет получает пакет, и обработка этого пакета занимает слишком много времени (код после socket.receive()), могут ли пропущены следующие пакеты, так как я сейчас не на socket.receive()?Можете ли вы пропустить пакеты, когда сокет в настоящее время не получает?

+1

Да. Тривиально, когда буфер UDP заполняется и стек упаковывает пакеты. Количество потерь зависит от размера буфера и требуемой глубины (чтобы не потерять пакеты). Windows и Linux позволяют настроить этот параметр. – user2864740

ответ

1

Строго говоря, да. Реализация может свободно отбрасывать пакеты в любом месте, которое она хочет. Тем не менее, это было бы довольно плохая реализация, если бы он не обеспечивал некоторую разумную величину буферизации, а Linux.