TCP Socket no connection timeout

后端 未结 2 832
时光取名叫无心
时光取名叫无心 2020-12-07 13:51

I open a TCP socket and connect it to another socket somewhere else on the network. I can then successfully send and receive data. I have a timer that sends something to the

2条回答
  •  Happy的楠姐
    2020-12-07 14:13

    If want a quick socket error propagation to your application code, you may wanna try this socket option:

    TCP_USER_TIMEOUT (since Linux 2.6.37) This option takes an unsigned int as an argument. When the value is greater than 0, it specifies the maximum amount of time in milliseconds that transmitted data may remain unacknowledged before TCP will forcibly close the corresponding connection and return ETIMEDOUT to the application. If the option value is specified as 0, TCP will use the system default.

    See full description on linux/man/tcp(7). This option is more flexible (you can set it on the fly, just right after a socket creation) than tcp_retries2 editing and exactly applies to a situation when you client's socket doesn't aware about server's one state and may get into so called half-closed state.

提交回复
热议问题