我想让我的应用程序层在我的服务器收到 Keep Alive 数据包时得到通知。我想知道 Keep Alive 数据包不触发 I/O 事件的原因是什么。是不是因为TCP Keep Alive包没有数据或者序号比连接的序号少1。
我做了一些测试,让我的客户发送 Keep Alive Packets。我的服务器使用 epoll 但没有被触发。
我还想知道如果我填充一个字节来保持活动数据包数据/有效负载,我的应用程序会收到通知/I/O 事件/Epoll 触发吗?
我想让我的应用程序层在我的服务器收到 Keep Alive 数据包时得到通知。我想知道 Keep Alive 数据包不触发 I/O 事件的原因是什么。是不是因为TCP Keep Alive包没有数据或者序号比连接的序号少1。
我做了一些测试,让我的客户发送 Keep Alive Packets。我的服务器使用 epoll 但没有被触发。
我还想知道如果我填充一个字节来保持活动数据包数据/有效负载,我的应用程序会收到通知/I/O 事件/Epoll 触发吗?
你不应该对此感到惊讶。例如,您也不会收到 RST 数据包的通知。
这些是传输级别的消息传递细节。在应用程序级别,TCP 为您提供字节流,与底层细节无关。如果你想拥有应用程序级的心跳,你应该在应用程序级协议上实现它们。
您最近的编辑似乎源于某种混乱。您不能将数据添加到 Keep Alive 数据包中,原因有两个: