【发布时间】:2012-08-04 14:42:12
【问题描述】:
对于 tcp 连接,在 Solaris 10 中,有没有办法在没有其他数据(只有 ack 数据包)的情况下向另一端发送 ACK 数据包。
我知道我们可以通过 TCP Keep alive 选项做到这一点,但它在 Solaris 10 中受支持。
【问题讨论】:
-
你的意思是来自应用程序,还是仅仅指TCP栈的操作?
-
其实我是想检测tcp断线。因为 Solaris 10 不支持 Tcp keep alive 选项,所以我想找到另一种方法;也许像get_socket_status这样的函数(不是系统调用)会发送一个ack包并返回连接状态。
-
那无济于事。保持活动 ACK 之所以有效,是因为它用于“错误”的序列号,因此它会使用正确的当前 seqno 引发回复。根据我的回答,没有任何 API 只会发送 ACK。除了读写之外,没有任何 API 可以检测到断开连接。