如何在VxWorks中为induvidual socket设置keepalive选项

时间:2010-12-10 08:22:21

标签: vxworks sockets

有没有办法在vxworks中为induvidual套接字描述符设置keepalive?我在一些文档中读到,setsockopt函数中的“SOL_TCP”选项将在linux中做这样的好处。 VxWorks中是否也提供此类工具?如果是这样,请提供相关的相关详细信息,例如我们需要包含的包含文件以及如何使用此类选项等。

2 个答案:

答案 0 :(得分:1)

从VxWorks“库参考”手册(可下载):

STREAM SOCKETS的选项

以下部分讨论可用于流(TCP)套接字的套接字选项。

SO_KEEPALIVE - 检测死连接

指定SO_KEEPALIVE选项以使传输协议(TCP)启动计时器以检测死连接:

 setsockopt (sock, SOL_SOCKET, SO_KEEPALIVE, &optval, sizeof (optval));

这可以防止应用程序挂起无效连接。此选项的optval值是一个整数(int类型),1(on)或0(off)。 通过发送由定时器触发的零长度TCP段来验证连接的完整性,以强制来自对等节点的响应。如果对等体在重复传输 KEEPALIVE 段后没有响应,则连接断开,回收所有协议数据结构,并且使用 ETIMEDOUT 错误。

ETIMEDOUT 超时可能以两种方式发生。如果尚未建立连接,则 TCPTV_KEEP_INIT 空闲后 KEEPALIVE 计时器将过期。如果建立连接,则当 TCPTV_KEEP_IDLE 没有流量时,KEEPALIVE计时器将启动。如果在使用间隔 TCPTV_KEEPINTVL 发送 KEEPALIVE TCPTV_KEEPCNT 时未收到对等方的响应,则TCP会假定连接无效。参数 TCPTV_KEEP_INIT TCPTV_KEEP_IDLE TCPTV_KEEPCNT TCPTV_KEEPINTVL 在文件target / h / net / tcp_timer中定义.H。

答案 1 :(得分:0)

在vxworks 6.8版本之后,setsockopt支持

IP_TCP_KEEPINTVL以及TCP_KEEPIDLE,TCP_KEEPCNT选项。在以前的vxworks发行版中,您可以全局更改这些值,并且所有创建的套接字都会生效。 下面的问题是如何完成的答案。

How to set TCP keep alive interval for a specific socket fd (Not system wide) in VxWorks?