powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / UDP Server иногда!!! не хочет принимать пакеты.
5 сообщений из 30, страница 2 из 2
UDP Server иногда!!! не хочет принимать пакеты.
    #39711079
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrbУказатель на указатель - согласен. А как без New добавлять в очередь? Я пойманный массив отправляю в очередь TQueue и в другом потоке работаю, а потом удаляю (Dispose). А без New AV вылетаетМожет быть да. Там же ещё у динамического массива есть счетчик ссылок.
Но вот такой момент, у вас ведь udpSrv.ThreadedEvent := true; то есть чтение будет производиться в дополнительном потоке, а не потоке сервера. Поэтому сам сервер можно создать в основном потоке, нет необходимости создавать его в отдельном потоке.
...
Рейтинг: 0 / 0
UDP Server иногда!!! не хочет принимать пакеты.
    #39711085
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62, согласен. можно создавать в основном потоке.

Итого, попробовал два режима:
1- через событие onUdpServerRead
2 - через процедуру receivebuffer

та же ...опа
то ловит пакеты, то не ловит

на всякий случай: ловлю в Linux на виртуальной машине
...
Рейтинг: 0 / 0
UDP Server иногда!!! не хочет принимать пакеты.
    #39711294
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrbКвейд, не гарантирует где? я на одной машины отправляю и получаю пакеты https://ru.wikipedia.org/wiki/UDP

UDP использует простую модель передачи, без неявных «рукопожатий» для обеспечения надёжности, упорядочивания или целостности данных. Таким образом, UDP предоставляет ненадёжный сервис, и датаграммы могут прийти не по порядку, дублироваться или вовсе исчезнуть без следа. UDP подразумевает, что проверка ошибок и исправление либо не нужны, либо должны исполняться в приложении.
...
Рейтинг: 0 / 0
UDP Server иногда!!! не хочет принимать пакеты.
    #39711295
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrbs62, согласен. можно создавать в основном потоке.

Итого, попробовал два режима:
1- через событие onUdpServerRead
2 - через процедуру receivebuffer

та же ...опа
то ловит пакеты, то не ловит

на всякий случай: ловлю в Linux на виртуальной машине

Для возникновения события onUdpServerRead в потоке требуется очередь обработки сообщений?
...
Рейтинг: 0 / 0
UDP Server иногда!!! не хочет принимать пакеты.
    #39716557
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UDP пакет полученный на событие UDPServerRead представляет собой TidBytes, что является динамическим массивом.
В другой поток я передаю этот массив через TQueue<TidBytes>, обернутую в крит. секцию через Enqueue.

В другом потоке принимаю через Dequeue. Использую для этого всего безобразия Delphi 10.2.2.

Оказывается, что в данной реализации очереди есть баги (внезапно) и метод Dequeue спокойно может вернуть массив нулевой длины.
Пришлось перейти на TObjectQueue<Tob>, где Tob класс с единственным параметром TidBytes.
Пока полет нормальный.
...
Рейтинг: 0 / 0
5 сообщений из 30, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / UDP Server иногда!!! не хочет принимать пакеты.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]