我试图在Linux环境下学习C语言套接字编程中选项SO_KEEPALIVE的用法。
我创建了一个服务器套接字并使用我的浏览器连接到它。它是成功的,我能够读取 GET 请求,但我被困在 SO_KEEPALIVE 的使用上。
我检查了这个链接keepalive_description@tldg.org但我找不到任何显示如何使用它的示例。
一旦检测到客户端对accept()
函数的请求,我就会在客户端套接字上设置SO_KEEPALIVE
选项值。1
现在我不知道,如何检查客户端是否已关闭,如何更改发送的探测之间的时间间隔等。
我的意思是,我将如何获得客户端已关闭的信号?(没有在客户端读取或写入 - 我认为当探针没有从客户端回复时我会得到一些信号),在设置选项 SO_KEEPALIVE 后我应该如何编程)。
此外,如果假设每 3 秒发送一次探测并且客户端在两者之间关闭,我将不会知道客户端已关闭,我可能会得到 SIGPIPE。
无论如何,重要的是我想知道如何在代码中使用 SO_KEEPALIVE。