Keep-Alive
От: Tessi  
Дата: 28.08.23 17:15
Оценка:
Я хочу сделать в своем клиенском приложении поддержку keep-alive (знаю, что сервер опцию поддерживает).
Я выставляю сокету опцию SO_KEEPALIVE. При этом сервер видит это и не закрывает соединение.

Вопрос — кроме выставление флага SO_KEEPALIVE, нужно ли держать сокет открытым (не делать closesocket)?
Но в этом случае непонятно, зачем нужен SO_KEEPALIVE, ведь сервер и так видит, что клиент не отсоединился и может ждать новых запросов.

Или же можно закрыть сокет и в следующий раз новый сокет будет использовать существующее соединение автоматически и это реализовано внутри ТСР?

B целом главный вопрос — как переиспользовать существующее соединение с сервером?


Я набросал маленький клиент на коленке, который сокет открывает->флаг->подключается->закрывает, я вижу (через Windows Resource Monitor), что соединение не закрывается в течение ~30 секунд, но второй созданный плле этого сокет создает уже новое соединение. Хотя я думал, что новый сокет будет использовать первое соединение, которое висит открытым, но чей сокет я закрыл.

Или со стороны клиента сокет=соединение?

Подскажите, как именно реализовано keep-alive соединение и как переиспользовать созданное keep-alive соединение.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.