потеря пакета udp - PullRequest
       42

потеря пакета udp

2 голосов
/ 23 ноября 2011

У меня есть программа, которая отправляет данные с одного компьютера на другой, используя UDP (размер данных 150 байтов).Эта программа написана на Delphi 7 (компоненты TldUDPClient и TldUDPServer используются для отправки и получения данных).Мне нужно протестировать эту программу на 30% потери пакетов.

Я использую ipfw для Windows (скачано с sourceforge):

ipfw -f flush
ipfw add pipe 1 ip from any to any out
ipfw pipe 1 config plr 0.3

Когда я использую ping, я вижу, что 30%потеря данных.

Когда я запускаю свою программу delphi, после некоторого времени работы она возвращает ошибку: socket error 10004.Описание ошибки было: Прерванный вызов функции.Операция блокировки была прервана из-за вызова WSACancelBlockingCall.

Является ли эта проблема возможности между моим сетевым компонентом и эмуляцией потери пакетов?Или я увижу это и в реальных ситуациях, когда теряется пакет?Какой другой брандмауэр или другое программное обеспечение я могу использовать для эмуляции потери пакетов?

1 Ответ

3 голосов
/ 23 ноября 2011

Больше похоже на проблему с эмуляцией потери пакетов.Инструмент ipfw, кажется, прерывает соединение - с с этого сайта - это ваша версия?- исходный код не реализует эту опцию - но ему 4 года.С помощью команды ping вы просто знаете, что не получили никакого ответа в течение ожидаемого времени - в протоколе ARP AFAIR отсутствует «соединение».

В стандарте UDP потеря пакетов проходит безболезненно:не получено ни подтверждения, ни сообщения об ошибке на уровне сокетов.

При реальном сетевом соединении UDP-пакеты теряются бесшумно.

И мучительно ... возможно ;)

...