Полагаю, вы имеете в виду сокет TCP.
Вы не можете гарантировать, что он жив в любой момент времени. Если включение SO_KEEPALIVE не делает то, что вы хотите, вам нужно будет делать пользовательские пакеты keepalive в протоколе приложения.
Некоторые протоколы для isntance имеют команду «NOOP», которую можно использовать.
В Linux (но не обязательно в других ОС) вы можете изменять интервал keepalive, используемый SO_KEEPALIVE для каждого сокета (см. Man 7 tcp)