Я хочу сделать в своем клиенском приложении поддержку keep-alive (знаю, что сервер опцию поддерживает).
Я выставляю сокету опцию SO_KEEPALIVE. При этом сервер видит это и не закрывает соединение.
Вопрос — кроме выставление флага SO_KEEPALIVE, нужно ли держать сокет открытым (не делать closesocket)?
Но в этом случае непонятно, зачем нужен SO_KEEPALIVE, ведь сервер и так видит, что клиент не отсоединился и может ждать новых запросов.
Или же можно закрыть сокет и в следующий раз новый сокет будет использовать существующее соединение автоматически и это реализовано внутри ТСР?
B целом главный вопрос — как переиспользовать существующее соединение с сервером?
Я набросал маленький клиент на коленке, который сокет открывает->флаг->подключается->закрывает, я вижу (через Windows Resource Monitor), что соединение не закрывается в течение ~30 секунд, но второй созданный плле этого сокет создает уже новое соединение. Хотя я думал, что новый сокет будет использовать первое соединение, которое висит открытым, но чей сокет я закрыл.
Или со стороны клиента сокет=соединение?
Подскажите, как именно реализовано keep-alive соединение и как переиспользовать созданное keep-alive соединение.