|
Переподключение сокетов
|
|||
---|---|---|---|
#18+
Спрошу я здесь. Есть у меня TCP сокет Код: pascal 1.
1. Будет ли корректным такой код Код: pascal 1.
или я после неудачной попытки соединения должен вызывать closesocket() и повторно socket()? 2. Если после успешного соединения сокет закрылся, могу ли я на том же сокете опять вызвать connect? Или опять нужно вызывать пару closesocket()/socket()? С уважением, Vasilisk ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 21:20 |
|
Переподключение сокетов
|
|||
---|---|---|---|
#18+
_Vasilisk_ 1. Будет ли корректным такой код If the error code returned indicates the connection attempt failed (that is, WSAECONNREFUSED, WSAENETUNREACH, WSAETIMEDOUT) the application can call connect again for the same socket. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 21:25 |
|
Переподключение сокетов
|
|||
---|---|---|---|
#18+
_Vasilisk_> после неудачной попытки соединения должен вызывать closesocket() Нет, не должен. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 21:37 |
|
Переподключение сокетов
|
|||
---|---|---|---|
#18+
_Vasilisk_ 2. Если после успешного соединения сокет закрылся, могу ли я на том же сокете опять вызвать connect? Или опять нужно вызывать пару closesocket()/socket()? Сервер мог вызвать shutdown, и ОС могла пометить это для твоего хэндла. То же самое - если со стороны клиента закрывают сокет (отправляя shutdown перед closecocket, что тоже обязательно). В общем у меня практика такая - после любой ошибки пересоздавать сокет, если требуется переподключение со стороны клиента. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 10:09 |
|
Переподключение сокетов
|
|||
---|---|---|---|
#18+
реконнект без паузы само по себе моветон нужна задержка, неплохо если экспоненциальная ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 10:41 |
|
Переподключение сокетов
|
|||
---|---|---|---|
#18+
_Vasilisk_ Код: pascal 1.
"Я нажал Подключиться и всё повисло!" ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 12:13 |
|
Переподключение сокетов
|
|||
---|---|---|---|
#18+
Дегтярев Евгений реконнект без паузы само по себе моветон YuRock Ошибка какая-то похожая пришла? YuRock Сервер мог вызвать shutdown, YuRock отправляя shutdown перед closecocket, что тоже обязательно ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 12:39 |
|
Переподключение сокетов
|
|||
---|---|---|---|
#18+
_Vasilisk_Это где написано про обязательность? https://docs.microsoft.com/en-us/windows/win32/winsock/graceful-shutdown-linger-options-and-socket-closure-2 Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 12:49 |
|
Переподключение сокетов
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov перевод на русский (не знаю, переводчиком или автоматический) https://docs.microsoft.com/ru-ru/windows/win32/winsock/graceful-shutdown-linger-options-and-socket-closure-2 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 13:31 |
|
Переподключение сокетов
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Но все таки, после вызова shutdown, closesocket или обрыва кабеля на сервере, может ли клиент использовать тот же сокет для вызова connect? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 14:05 |
|
Переподключение сокетов
|
|||
---|---|---|---|
#18+
_Vasilisk_ YuRockСервер мог вызвать shutdown, ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 14:20 |
|
Переподключение сокетов
|
|||
---|---|---|---|
#18+
_Vasilisk_ Но все таки, после вызова shutdown, closesocket или обрыва кабеля на сервере, может ли клиент использовать тот же сокет для вызова connect? А что, проблема на всякий случай выделить новый хэндл? Не такая уж частая это операция - реконнект. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 14:24 |
|
Переподключение сокетов
|
|||
---|---|---|---|
#18+
https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-connect When a connection between sockets is broken, the socket that was connected should be discarded and new socket should be created. When a problem develops on a connected socket, the application must discard the socket and create the socket again in order to return to a stable point. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 14:31 |
|
Переподключение сокетов
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Спасибо. Т.е. до успешного коннекта можно вызывать connect сколько угодно раз, а после только с пересозданием ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 14:55 |
|
Переподключение сокетов
|
|||
---|---|---|---|
#18+
_Vasilisk_ Dimitry Sibiryakov, Спасибо. Т.е. до успешного коннекта можно вызывать connect сколько угодно раз, а после только с пересозданием авторOnce the shutdown function is called to disable send, receive, or both, there is no method to re-enable send or receive for the existing socket connection. An application should not rely on being able to reuse a socket after it has been shut down. In particular, a Windows Sockets provider is not required to support the use of connect on a socket that has been shut down. If an application wants to reuse a socket, then the DisconnectEx function should be called with the dwFlags parameter set to TF_REUSE_SOCKET to close a connection on a socket and prepare the socket handle to be reused. When the DisconnectEx request completes, the socket handle can be passed to the AcceptEx or ConnectEx function. https://docs.microsoft.com/en-us/windows/win32/api/winsock/nf-winsock-shutdown То есть, пишут, что после вызова shutdown полагаться на то,что можно снова вызвать connect, не стоит. (То есть тоже стоит закрыть сокет и, если надо, создать новый). И пишут, что чтобы использовать сокет повторно, надо вызывать функцию DisconnectEx. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 15:31 |
|
Переподключение сокетов
|
|||
---|---|---|---|
#18+
В итоге это опять-таки сводится к графу состояний сокета. Только в моей цитате сказано, что способа привести сокет в нужное состояние нет, а в твоей он таки есть. PS: По-любому повторное использование туалетной бумаги - плохая идея. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 15:43 |
|
|
start [/forum/topic.php?fid=58&msg=40087047&tid=2037147]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
155ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 268ms |
0 / 0 |