|
|
|
UDP Server иногда!!! не хочет принимать пакеты.
|
|||
|---|---|---|---|
|
#18+
cptngrbУказатель на указатель - согласен. А как без New добавлять в очередь? Я пойманный массив отправляю в очередь TQueue и в другом потоке работаю, а потом удаляю (Dispose). А без New AV вылетаетМожет быть да. Там же ещё у динамического массива есть счетчик ссылок. Но вот такой момент, у вас ведь udpSrv.ThreadedEvent := true; то есть чтение будет производиться в дополнительном потоке, а не потоке сервера. Поэтому сам сервер можно создать в основном потоке, нет необходимости создавать его в отдельном потоке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 16:48 |
|
||
|
UDP Server иногда!!! не хочет принимать пакеты.
|
|||
|---|---|---|---|
|
#18+
s62, согласен. можно создавать в основном потоке. Итого, попробовал два режима: 1- через событие onUdpServerRead 2 - через процедуру receivebuffer та же ...опа то ловит пакеты, то не ловит на всякий случай: ловлю в Linux на виртуальной машине ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 16:54 |
|
||
|
UDP Server иногда!!! не хочет принимать пакеты.
|
|||
|---|---|---|---|
|
#18+
cptngrbКвейд, не гарантирует где? я на одной машины отправляю и получаю пакеты https://ru.wikipedia.org/wiki/UDP UDP использует простую модель передачи, без неявных «рукопожатий» для обеспечения надёжности, упорядочивания или целостности данных. Таким образом, UDP предоставляет ненадёжный сервис, и датаграммы могут прийти не по порядку, дублироваться или вовсе исчезнуть без следа. UDP подразумевает, что проверка ошибок и исправление либо не нужны, либо должны исполняться в приложении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 21:22 |
|
||
|
UDP Server иногда!!! не хочет принимать пакеты.
|
|||
|---|---|---|---|
|
#18+
cptngrbs62, согласен. можно создавать в основном потоке. Итого, попробовал два режима: 1- через событие onUdpServerRead 2 - через процедуру receivebuffer та же ...опа то ловит пакеты, то не ловит на всякий случай: ловлю в Linux на виртуальной машине Для возникновения события onUdpServerRead в потоке требуется очередь обработки сообщений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 21:23 |
|
||
|
UDP Server иногда!!! не хочет принимать пакеты.
|
|||
|---|---|---|---|
|
#18+
UDP пакет полученный на событие UDPServerRead представляет собой TidBytes, что является динамическим массивом. В другой поток я передаю этот массив через TQueue<TidBytes>, обернутую в крит. секцию через Enqueue. В другом потоке принимаю через Dequeue. Использую для этого всего безобразия Delphi 10.2.2. Оказывается, что в данной реализации очереди есть баги (внезапно) и метод Dequeue спокойно может вернуть массив нулевой длины. Пришлось перейти на TObjectQueue<Tob>, где Tob класс с единственным параметром TidBytes. Пока полет нормальный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2018, 11:20 |
|
||
|
|

start [/forum/topic.php?fid=58&gotonew=1&tid=2040288]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
8ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 464ms |

| 0 / 0 |
