Протокол UDP тормозит

Простейшие вопросы в области инженерной разработки
Ответить
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Протокол UDP тормозит

Сообщение Юрий »

Сделал себе программки для отладки передачи по UDP. На одном ПК работает нормально. Но на разных возникает странная ситуация. Даш посылку и она долетает сразу, но после этого надо выдержать паузу ~15 сек чтобы следующая посылка тоже долетела сразу. Если послать сразу несколько посылок, то они всё же отработаются, но с задержкой относительно друг друга ~15 сек.
Вложения
UDP_NameЭтот.vi
(16.43 КБ) 84 скачивания
UDP_NameТот.vi
(16.44 КБ) 97 скачиваний
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Re: Протокол UDP тормозит

Сообщение Юрий »

Удалось выяснить, что тормозит.
Тормоз.png
Тормоз.png (9.56 КБ) 1766 просмотров
Выяснилось так же, что для того, чтобы данные начали передаваться хоть с одной стороны, необходима посылка с обоих сторон даже при явном задании портов - для меня это не понятно. При чём, если посылки замолкали на какое то время ~30 сек, то для того, чтобы они начали опять передаваться, необходимо дать хоть один ответ с другой стороны. Может, это так и должно быть, но тогда необходимо понять в чём дело, чтобы правильно организовать обмен при паузах.
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5463
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 87 раз

Re: Протокол UDP тормозит

Сообщение IvanLis »

Юрий писал(а): 21 июн 2020, 00:21 Может, это так и должно быть, но тогда необходимо понять в чём дело, чтобы правильно организовать обмен при паузах.
Если Вы выложите свой код в более ранней версии, то возможно желающих оказать помощь будет больше.
ujin
user
user
Сообщения: 94
Зарегистрирован: 28 июл 2019, 13:16
Версия LabVIEW: 19
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

Re: Протокол UDP тормозит

Сообщение ujin »

Юрий писал(а): 21 июн 2020, 00:21 Удалось выяснить, что тормозит.
Тормоз.png
Выяснилось так же, что для того, чтобы данные начали передаваться хоть с одной стороны, необходима посылка с обоих сторон даже при явном задании портов - для меня это не понятно. При чём, если посылки замолкали на какое то время ~30 сек, то для того, чтобы они начали опять передаваться, необходимо дать хоть один ответ с другой стороны. Может, это так и должно быть, но тогда необходимо понять в чём дело, чтобы правильно организовать обмен при паузах.
Таймаут 0 нельзя ставить. Либо -1 тогда Event структура бесконечно ждет события и не заходит в цикл таймаут. Либо число - в этом случае будет периодически заходить в таймаут.
При 0 все время будет выполняться таймаут. И по чистой случайности может пойматься событие. Либо при выходе из таймаута.
В Event Structure нежелательно долго исполняемый код размещать. Но это отдельная тема
Вложения
udp.png
Artem.spb

Activity Автор
professor
professor
Сообщения: 3404
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 173 раза
Контактная информация:

Re: Протокол UDP тормозит

Сообщение Artem.spb »

ujin писал(а): 21 июн 2020, 14:44 Таймаут 0 нельзя ставить.
вообще можно, но неразумно.
И по чистой случайности может пойматься событие.
вы неверно понимаете устройство событий.
Они не случайно ловятся в моменты "простоя" структуры, они ставятся в очередь на исполнение в момент возникновения. А дальше структура их отрабатывает по мере возможностей
to0.png
Если событий нет, то да, бесконечно шпарит таймаут и забивает процессор ненужной работой, но если что-то "случается", оно отработает сразу же.
Можете глянуть на X-control, там даже написано, что таймаут всегда должен быть 0 для корректного выхода из кода.

Но вот с тем, что нет смысла ставить 0 тут полностью согласен.
В Event Structure нежелательно долго исполняемый код размещать. Но это отдельная тема
Это прям отдельная тема для отдельного холивара.
В цикле обработки действий пользователя да, нужно поймать событие и переслать его куда следует, иначе будет казаться, что программа зависла.
Но если это что-то скрытое, то не вижу проблем.
ujin
user
user
Сообщения: 94
Зарегистрирован: 28 июл 2019, 13:16
Версия LabVIEW: 19
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

Re: Протокол UDP тормозит

Сообщение ujin »

Artem.spb писал(а): 21 июн 2020, 15:30 вы неверно понимаете устройство событий.
Они не случайно ловятся в моменты "простоя" структуры, они ставятся в очередь на исполнение в момент возникновения. А дальше структура их отрабатывает по мере возможностей
Да, неправильно понимал.
Увидел 0, сразу поменял на 50 мс. В примере все передается.
Сейчас переставил на 0 так же все передается.
Тогда IP To String Function "which returns an IP address in the form machinename.domain.com" возможно не может получить доменное имя из локального DNS.
Недавно мы сталкивались с подобной проблемой. Умный маршрутизатор запомнил имя компьютера. При подключении другого с таким же именем не обновил таблицу.
Так же может быть связано с настройками NetBIOS.
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Re: Протокол UDP тормозит

Сообщение Юрий »

ujin писал(а): 21 июн 2020, 17:28 Тогда IP To String Function "which returns an IP address in the form machinename.domain.com" возможно не может получить доменное имя из локального DNS.
Недавно мы сталкивались с подобной проблемой. Умный маршрутизатор запомнил имя компьютера. При подключении другого с таким же именем не обновил таблицу.
Так же может быть связано с настройками NetBIOS.
И как вывернулись?
ujin
user
user
Сообщения: 94
Зарегистрирован: 28 июл 2019, 13:16
Версия LabVIEW: 19
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

Re: Протокол UDP тормозит

Сообщение ujin »

Юрий писал(а): 21 июн 2020, 22:04
ujin писал(а): 21 июн 2020, 17:28 Тогда IP To String Function "which returns an IP address in the form machinename.domain.com" возможно не может получить доменное имя из локального DNS.
Недавно мы сталкивались с подобной проблемой. Умный маршрутизатор запомнил имя компьютера. При подключении другого с таким же именем не обновил таблицу.
Так же может быть связано с настройками NetBIOS.
И как вывернулись?
Не использовали имена, соединялись только по IP, далее пробовали очищать DNS-кэш, далее прописать адрес в локальной таблице (Hosts в папке C:\system32\drivers\etc)- не помогло, далее сисадмин на своем умном маршрутизаторе обновил таблицу. Собственно он и разобрался в вопросе.
И несколько раз уже попадались одинаковые MAC адреса в сети. В компьютере MAC адрес можно самому прописать, в некоторых устройствах идут одинаковые и необходимо изменить.
С одинаковыми MAC адресами похожее поведение на то как Вы описываете проблему.
Так же Wireshark в помощь.
Ответить

Вернуться в «Для чайников»