gpt4 book ai didi

c - 如何检测 TCP 保活数据包并保持连接打开

转载 作者:行者123 更新时间:2023-11-30 19:02:09 25 4
gpt4 key购买 nike

我用 epoll 编写了自己的服务器。当我从客户端向服务器发送 TCP keep active 包时,epoll 事件不会被触发。问题:我希望我的服务器在获取 tcp keep active 包时保持连接打开。

我还尝试查看 tcp 信息,但当服务器获取保持事件包时,其属性没有更新。

我知道 tcp keep active 包没有数据,而是 header 。我在我的tcpdump中看到,内核在收到保活包后发回tcp保活ACK。我的目标是在保持事件状态到达时保持连接打开(类似于我的服务器中的重置计时器,我的服务器可以在没有 TCP 真实数据的情况下关闭连接)

我设置客户端来建立连接并发送数据(例如“hello world”),然后将保持事件的包发送到服务器。

我的服务器是 epoll 触发的。我也已经尝试将我的服务器设置为非阻塞。

// epoll setting I tested
EPOLLIN | EPOLLOUT | EPOLLRDHUP | EPOLLET

(我在互联网上发现的大多数问题都与客户端有关,我的问题更多是关于 tcp keepalived 的服务器或接收方,如何保持其打开)

最佳答案

不,据我所知这是不可能的。

您必须在应用程序协议(protocol)中实现心跳,然后才能停止使用 TCP keepalive。

关于c - 如何检测 TCP 保活数据包并保持连接打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56434706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com