реклама на сайте
подробности

 
 
> Не могу нормально принять данные по UDP, Помогите, пожалуйста.
DSIoffe
сообщение Jul 3 2011, 19:29
Сообщение #1


Дима
*****

Группа: Свой
Сообщений: 1 683
Регистрация: 15-12-04
Из: Санкт-Петербург
Пользователь №: 1 486



Здравствуйте все!
Я соорудил некое устройство на W5100 в связке с ПЛИС, которое обменивается с компьютером по UDP.
На компьютере работает моя самодельная программа, написанная в Delphi 7. Она работает с UDP через WinAPI так, как написано в книге А.Б. Григорьева "О чём не пишут в книгах по Delphi", стр. 204 и далее. Или я думаю, что она так работает.
Пока надо было гонять туда-сюда по два-три пакета, всё было хорошо. Сейчас я отправляю через W5100 подряд 256 пакетов размером поменьше MTU с интервалом 4 мс. Все эти пакеты появляются в компьютере, их видно в сниффере WireShark, и содержимое у них правильное.
Но моя программа, приняв 5 первых пакетов, затем примерно полсекунды не видит приходящих пакетов. А потом она нормально принимает все оставшиеся, больше сотни. Содержимое каждого пакета - байты с его номером, так что легко понять, чего не хватает, а что пришло.
То есть, как я понимаю, системе хватает быстродействия, чтобы принимать пакеты каждые 4 мс. Причём даже по 2 штуки за 4 мс: я пробовал слать пакеты больше MTU, они разбивались на пары внутри W5100 и нормально доходили, и тогда до пропадания программа нормально принимала 9 пакетов. Как бороться с пропаданием пакетов после начала передачи?
Очень прошу объяснить как можно проще, потому что я не разбираюсь в сетевых вопросах.


--------------------
© CОПЫРИГХТ: Дмитрий Иоффе, Советский Союз.
Приглашаю посмотреть: http://muradowa.spb.ru/ и http://www.drtata.narod.ru/index.html
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vat
сообщение Jul 7 2011, 11:00
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 57
Регистрация: 8-12-04
Пользователь №: 1 403



Цитата(DSIoffe @ Jul 3 2011, 23:29) *
Все эти пакеты появляются в компьютере, их видно в сниффере WireShark, и содержимое у них правильное.
Но моя программа, приняв 5 первых пакетов, затем примерно полсекунды не видит приходящих пакетов.

Пакеты UDP у вас корректные? Контрольные суммы правильные? Длины TCP и UDP частей соответствуют реальным? MAC, IP, Port верно указаны?Если что не так, то сокет прибъет некорректный пакет, а снифер съест любой - даже самый кривой...
И еще вероятность небольшая, но может мешает фаервол. Снифер ловит до фаервола, поэтому там все пакеты. Конечно обычно фаер должен либо блокировать все, либо все пропускать, но ... может какая-то странная защита от flood или быстродействие все-таки. Поправьте скорострельность в настройках - пусть пакеты летят раз в секунду. Что-то изменится?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 11th August 2025 - 19:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.02166 секунд с 7
ELECTRONIX ©2004-2016