使用C语言socket判断当前网络是否联通
有时候需要用代码判断当前网络是否联通
//获取联网状态int check_net(void){ int fd; int in_len=0; struct sockaddr_in servaddr; //char buf[128]; in_len = sizeof(struct sockaddr_in); fd = socket(AF_INET,SOCK_STREAM,0); if(fd < 0) { perror("socket"); return -1; } /*设置默认服务器的信息*/ servaddr.sin_family = AF_INET; servaddr.sin_port = htons(NET_PORT); servaddr.sin_addr.s_addr = inet_addr(NET_IP); memset(servaddr.sin_zero,0,sizeof(servaddr.sin_zero)); /*connect 函数*/ if(connect(fd,(struct sockaddr* )&servaddr,in_len) < 0 ) { printf("not connect to internet!\n "); close(fd); return 0; //没有联网成功 } else { printf("=====connect ok!=====\n"); close(fd); return 1; } }上述函数可能有待于优化,因为如果短时间内连续执行可能会出现停滞的情况,打印不出来connet ok!不过1s调用一次这个函数来检测应该是可以的!
欢迎网友为我指正里面的不足之处!