谢谢http://blog.csdn.net/sjin_1314/article/details/8897588。
试了方法2有效。但是这个方法有局限性,如果不是网络断开的情况,是可以检测到的,如果是网络断开的情况,是检测不到的。
#include <netinet/tcp.h>
int IsSocketConnected(int sock)
{
struct tcp_info info;
int len=sizeof(info);
if(sock<=0){
return 0;
}
memset(&info,0,sizeof(info));
getsockopt(sock, IPPROTO_TCP, TCP_INFO, &info, (socklen_t *)&len);
if(info.tcpi_state== 1) {
printf("socket connected\n");
return 1;
} else {
printf("socket disconnected\n");
return 0;
}
}