可参考这篇文章后面几页的内容 我的需求只是要判断某种网络是否可用,系统中有局域网eth0和3G拨号链接ppp0,有不同的Socket要创建在各自的网络上,写如下函数,传用网络名就可以判断网络是否可用。
| // 检测网络连接// routeName: 网络连接名称,如ppp0、eth0等// 返回值: 网络正常返回0,异常返回-1int CheckNetLink(const char *routeName){ register int fd, intrface; struct ifreq buf[16]; struct ifconf ifc; if ((fd = socket (AF_INET, SOCK_DGRAM, 0)) >= 0) { ifc.ifc_len = sizeof(buf); ifc.ifc_buf = (caddr_t) buf; if (!ioctl(fd, SIOCGIFCONF, (char *) &ifc)) { intrface = ifc.ifc_len / sizeof (struct ifreq); while (intrface-- > 0) { if (strcmp(buf[intrface].ifr_name, routeName) == 0) { |