有没有办法在vxworks中为工业套接字描述符设置keepalive?我在一些文档中读到setsockopt函数中的"SOL_TCP“选项在linux中可以做这样的事情。这样的功能在VxWorks中也可用吗?如果是这样,请提供与此相关的详细信息,例如我们需要包含哪些包含文件以及如何使用此类选项等。
发布于 2011-01-07 23:28:26
从VxWorks“图书馆参考”手册(可下载):
用于流套接字的选项
以下各节讨论可用于流(TCP)套接字的套接字选项。
SO_KEEPALIVE --检测失效连接
指定TCP选项,使传输协议( SO_KEEPALIVE )启动一个计时器来检测失效连接:
setsockopt (sock, SOL_SOCKET, SO_KEEPALIVE, &optval, sizeof (optval));这可以防止应用程序挂起无效的连接。此选项在optval处的值是一个整数(类型为int),可以是1(开)或0(关)。通过发送由计时器触发的零长度TCP数据段来验证连接的完整性,以强制对等节点做出响应。如果对等设备在重复传输KEEPALIVE段后没有响应,则连接将被丢弃,所有协议数据结构都将被回收,在连接上休眠的进程将被唤醒,并显示ETIMEDOUT错误。
ETIMEDOUT超时可能以两种方式发生。如果尚未建立连接,则在TCPTV_KEEP_INIT.空闲后,KEEPALIVE计时器到期如果连接已建立,则当没有TCPTV_KEEP_IDLE.的流量时,KEEPALIVE计时器启动如果在间隔为TCPTV_KEEPINTVL,的TCPTV_KEEPCNT次发送times段后没有收到对等方的响应,就认为连接是无效的。参数TCPTV_KEEP_INIT,TCPTV_KEEP_IDLE,TCPTV_KEEPCNT,和TCPTV_KEEPINTVL在文件target/h/net/tcp_timer.h中定义。
发布于 2019-08-29 15:43:27
VxWorks6.8版本之后的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?
https://stackoverflow.com/questions/4406906
复制相似问题