Я написал свой собственный сервер с epoll. Когда я отправляю TCP keep live пакеты от клиента к серверу, событие epoll не сработает. Вопрос: я хочу, чтобы мой сервер оставлял соединение открытым, когда сервер получает пакеты tcp keep alive.
Я также пытался просмотреть информацию tcp, но не было обновлений для ее атрибутов, когда сервер получил пакеты поддержки активности.
Я понимаю, что tcp keep alive пакеты - это не данные, а заголовок. Я видел в моем tcpdump, ядро отправило обратно tcp keep alive ACK после получения пакета keep alive. Моя цель состоит в том, чтобы поддерживать соединение открытым при поступлении активности (например, таймер сброса на моем сервере, мой сервер может закрыть соединение без реальных данных TCP)
Я настроил свой клиент на установление соединения и отправку данных (например, «hello world»), а затем отправляю пакеты «keep alive» на сервер.
Мой сервер запущен epoll. Я также также попытался установить свой сервер, чтобы быть неблокирующим.
// epoll setting I tested
EPOLLIN | EPOLLOUT | EPOLLRDHUP | EPOLLET
(большинство вопросов, которые я нашел в интернете, относятся к клиентской части, мой вопрос больше касается поддержки сервера или получателя протокола tcp, как его сохранить)