Протокол UDP тормозит
-
- 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
- Сообщения: 526
- Зарегистрирован: 28 фев 2010, 18:04
- Версия LabVIEW: LV2018
- Благодарил (а): 10 раз
- Поблагодарили: 18 раз
- Контактная информация:
Re: Протокол UDP тормозит
Удалось выяснить, что тормозит.
Выяснилось так же, что для того, чтобы данные начали передаваться хоть с одной стороны, необходима посылка с обоих сторон даже при явном задании портов - для меня это не понятно. При чём, если посылки замолкали на какое то время ~30 сек, то для того, чтобы они начали опять передаваться, необходимо дать хоть один ответ с другой стороны. Может, это так и должно быть, но тогда необходимо понять в чём дело, чтобы правильно организовать обмен при паузах.-
IvanLis
- guru
- Сообщения: 5464
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Протокол UDP тормозит
Если Вы выложите свой код в более ранней версии, то возможно желающих оказать помощь будет больше.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- user
- Сообщения: 94
- Зарегистрирован: 28 июл 2019, 13:16
- Версия LabVIEW: 19
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Re: Протокол UDP тормозит
Таймаут 0 нельзя ставить. Либо -1 тогда Event структура бесконечно ждет события и не заходит в цикл таймаут. Либо число - в этом случае будет периодически заходить в таймаут.Юрий писал(а): ↑21 июн 2020, 00:21 Удалось выяснить, что тормозит.
Тормоз.png
Выяснилось так же, что для того, чтобы данные начали передаваться хоть с одной стороны, необходима посылка с обоих сторон даже при явном задании портов - для меня это не понятно. При чём, если посылки замолкали на какое то время ~30 сек, то для того, чтобы они начали опять передаваться, необходимо дать хоть один ответ с другой стороны. Может, это так и должно быть, но тогда необходимо понять в чём дело, чтобы правильно организовать обмен при паузах.
При 0 все время будет выполняться таймаут. И по чистой случайности может пойматься событие. Либо при выходе из таймаута.
В Event Structure нежелательно долго исполняемый код размещать. Но это отдельная тема
-
- professor
- Сообщения: 3404
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 175 раз
- Контактная информация:
Re: Протокол UDP тормозит
вообще можно, но неразумно.
вы неверно понимаете устройство событий.И по чистой случайности может пойматься событие.
Они не случайно ловятся в моменты "простоя" структуры, они ставятся в очередь на исполнение в момент возникновения. А дальше структура их отрабатывает по мере возможностей Если событий нет, то да, бесконечно шпарит таймаут и забивает процессор ненужной работой, но если что-то "случается", оно отработает сразу же.
Можете глянуть на X-control, там даже написано, что таймаут всегда должен быть 0 для корректного выхода из кода.
Но вот с тем, что нет смысла ставить 0 тут полностью согласен.
Это прям отдельная тема для отдельного холивара.В Event Structure нежелательно долго исполняемый код размещать. Но это отдельная тема
В цикле обработки действий пользователя да, нужно поймать событие и переслать его куда следует, иначе будет казаться, что программа зависла.
Но если это что-то скрытое, то не вижу проблем.
-
- user
- Сообщения: 94
- Зарегистрирован: 28 июл 2019, 13:16
- Версия LabVIEW: 19
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Re: Протокол UDP тормозит
Да, неправильно понимал.
Увидел 0, сразу поменял на 50 мс. В примере все передается.
Сейчас переставил на 0 так же все передается.
Тогда IP To String Function "which returns an IP address in the form machinename.domain.com" возможно не может получить доменное имя из локального DNS.
Недавно мы сталкивались с подобной проблемой. Умный маршрутизатор запомнил имя компьютера. При подключении другого с таким же именем не обновил таблицу.
Так же может быть связано с настройками NetBIOS.
-
- 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.
-
- user
- Сообщения: 94
- Зарегистрирован: 28 июл 2019, 13:16
- Версия LabVIEW: 19
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Re: Протокол UDP тормозит
Не использовали имена, соединялись только по IP, далее пробовали очищать DNS-кэш, далее прописать адрес в локальной таблице (Hosts в папке C:\system32\drivers\etc)- не помогло, далее сисадмин на своем умном маршрутизаторе обновил таблицу. Собственно он и разобрался в вопросе.Юрий писал(а): ↑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.
И несколько раз уже попадались одинаковые MAC адреса в сети. В компьютере MAC адрес можно самому прописать, в некоторых устройствах идут одинаковые и необходимо изменить.
С одинаковыми MAC адресами похожее поведение на то как Вы описываете проблему.
Так же Wireshark в помощь.