|
|
|
Сокет закрывается самостоятельно?
|
|||
|---|---|---|---|
|
#18+
Принимаю пакеты по UDP какое-то время, все хорошо. Наступает час х и пакеты перестают приходить. Все делается на локальной машине, WireShark продолжает ловить пакеты. Может сокет самостоятельно закрылся, а я не в курсе? Подскажите в чем может быть дело? Прием осуществляю следующей процедурой Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2020, 09:18 |
|
||
|
Сокет закрывается самостоятельно?
|
|||
|---|---|---|---|
|
#18+
Если я закрою сокет самостоятельно, то ошибка будет WSAGetLasrError = 10038, так что НОРМАЛЬНОЕ закрытие сокета не происходит, я бы видел это в логе. Что остается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2020, 09:25 |
|
||
|
Сокет закрывается самостоятельно?
|
|||
|---|---|---|---|
|
#18+
cptngrbЧто остается? Остаётся первое и единственное ощущение от твоего кода: где ты списал этот бред? Никогда больше туда не ходи. Выкинь overlapped, выкинь WSARecv, используй простой recv() в блокирующем режиме. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2020, 12:32 |
|
||
|
Сокет закрывается самостоятельно?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, этот бред работает в разы быстрее recv и нашел я его в книжке "О чём не пишут в книгах по Delphi." А. Б. Григорьев ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2020, 13:39 |
|
||
|
Сокет закрывается самостоятельно?
|
|||
|---|---|---|---|
|
#18+
cptngrbэтот бред работает в разы быстрее recv и нашел я его в книжке Во-первых, не верю. Во-вторых, и в книжках пишут полную чушь, Архангельский тому подтверждение. В-третьих, этот код способен зацикливаться без вызова чтения или ошибка может быть совершенно в другом месте. Отлаживайся. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2020, 13:47 |
|
||
|
Сокет закрывается самостоятельно?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, а как он может зациклиться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2020, 14:07 |
|
||
|
Сокет закрывается самостоятельно?
|
|||
|---|---|---|---|
|
#18+
cptngrbа как он может зациклиться? Например, если WSAGetLastError() в цикле вернёт 0 хоть раз. Без нового вызова WSARecv подписка на событие в overlapped структуре не возобновится и твой цикл будет бесконечно ждать его возведения. Отлаживайся. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2020, 14:14 |
|
||
|
Сокет закрывается самостоятельно?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, это да, но этот кусок кода тоже в цикле только уже в Exeute потока ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2020, 14:35 |
|
||
|
Сокет закрывается самостоятельно?
|
|||
|---|---|---|---|
|
#18+
Совершенно без разницы где наружный цикл если у тебя внутренний никогда не прервётся. Отлаживайся. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2020, 14:42 |
|
||
|
Сокет закрывается самостоятельно?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Например, если WSAGetLastError() в цикле вернёт 0 хоть раз. Без нового вызова WSARecv подписка на событие в overlapped структуре не возобновится и твой цикл будет бесконечно ждать его возведения. Код: pascal 1. 2. 3. 4. 5. зацикливание будет только при условии WSAError = WSA_IO_INCOMPLETE, но эта ошибка означает только то, что операция чтения не завершена и нужно вызывать WSAGetOverlappedResult до посинения. В этом и заключается работа с сокетом. Ну или я вообще не понимаю, что вы говорите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2020, 15:00 |
|
||
|
Сокет закрывается самостоятельно?
|
|||
|---|---|---|---|
|
#18+
cptngrbэта ошибка означает только то, что операция чтения не завершена Если быть точным, это означает, что event в структуре overlapped не взведён. А он никогда и не станет таким если по каким-то причинам подписка на событие отпала. Отлаживайся. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2020, 15:23 |
|
||
|
Сокет закрывается самостоятельно?
|
|||
|---|---|---|---|
|
#18+
Сорри, что по теме, но фаерволы и прочие NATы прикрывают входящий канал после определенного периода неактивности по паре исходящий_адрес:исходящий_порт <-> входящий_адрес:входящий_порт . И делают они это не из вредности, а потому, что иначе нельзя. Не понятно, отваливается у вас связь просто через какое-то время, или через время бездействия? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2020, 16:05 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39954611&tid=2038348]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
25ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 313ms |

| 0 / 0 |
