У меня есть сокеты, которые слушают ICMP/UDP
пакетов. Если сокет получает пакет, и обработка этого пакета занимает слишком много времени (код после socket.receive()
), могут ли пропущены следующие пакеты, так как я сейчас не на socket.receive()
?Можете ли вы пропустить пакеты, когда сокет в настоящее время не получает?
0
A
ответ
1
Строго говоря, да. Реализация может свободно отбрасывать пакеты в любом месте, которое она хочет. Тем не менее, это было бы довольно плохая реализация, если бы он не обеспечивал некоторую разумную величину буферизации, а Linux.
Да. Тривиально, когда буфер UDP заполняется и стек упаковывает пакеты. Количество потерь зависит от размера буфера и требуемой глубины (чтобы не потерять пакеты). Windows и Linux позволяют настроить этот параметр. – user2864740