我在dtask_tcp_hello函数中有设置
int keepalive = 1;
setsocket(s, SOL_SOCKET,SO_KEEPALIVE,(VOID)&keepalive,sizeof(keepalive));
但是当我把网线拔了,依然没有检测到。
该怎么检测我是把网线拔了。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我在dtask_tcp_hello函数中有设置
int keepalive = 1;
setsocket(s, SOL_SOCKET,SO_KEEPALIVE,(VOID)&keepalive,sizeof(keepalive));
但是当我把网线拔了,依然没有检测到。
该怎么检测我是把网线拔了。
ni你好,这个文档下的daemonnew讲解函数中有个例子。用的是NDK_setsocket,其实功能一样。
我需要的是怎么检测到是拔网线导致TCP连接断开的机制。
换句话说通常情况下的连接断开都能立即检测到,但是异常断开(拔网线),tcp不会报错,检测不到。
我看了相关资料,说设置keepalive可以用来检测异常断开。但是我设置成这样后,没有效果,依然检测不到。
int keepalive = 1;
setsocket(s, SOL_SOCKET,SO_KEEPALIVE,(VOID)&keepalive,sizeof(keepalive));
还用。cfg把tcp keepalive相关的keepidle ,time等等都设置很小了。没用