socket 怎样检测TCP连接是否失效?
比如客户端,希望在定时器中不断检测当前连接是否有效,如果检测无效后,重新执行连接,直到连接成功;若在一定时间内无法连接成功,退出程序。
客户端连接的程序为void ClientConnect(); int ConnectFlag=0;
检测连接是否有效的函数定义为void SocketCheck(); int CheckFlag=0;
若 定时器回调函数为void Timer(int signo);定时时间为100ms,由于定时器时间间隔的限制,不能留很多时间去检测,我查了一些网上的说法,用KeepAlive,但是我不会写这部分代码,也不知道怎么设置时间。请大家帮我看一下void SocketCheck();函数应该怎么写。 探测时间怎么设置在30ms左右(100ms以内)?还有就是怎么判断在20s内无法连接就退出程序?
以下是我现在写的程序,如果把服务器断掉,void SocketCheck()中一直会运行到setsockopt内,无法检测到连接失效。
void Timer(int signo)
{
if(CheckFlag==0)
{
ClientConnect();
}
if( ConnectFlag==1)
{
SocketCheck();
}
}
void ClientConnect()
{
......
if(-1 &