读书人

应用C语言socket判断当前网络是否联通

发布时间: 2013-03-04 17:22:12 作者: rapoo

使用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调用一次这个函数来检测应该是可以的!

欢迎网友为我指正里面的不足之处!


读书人网 >C语言

热点推荐