- 论坛徽章:
- 17
|
回复 1# yao3gang
Linux 下可以用:- // if_name like "ath0", "eth0". Notice: call this function // need root privilege. // return value:
- // -1 -- error , details can check errno // 1 -- interface link up // 0 -- interface link down.
- int get_netlink_status(const char *if_name) {
- int skfd; struct ifreq ifr;
- struct ethtool_value edata; edata.cmd = ETHTOOL_GLINK; edata.data = 0;
- memset(&ifr, 0, sizeof(ifr));
- strncpy(ifr.ifr_name, if_name, sizeof(ifr.ifr_name) - 1); ifr.ifr_data = (char *) &edata;
- if (( skfd = socket( AF_INET, SOCK_DGRAM, 0 )) < 0) return -1;
- if(ioctl( skfd, SIOCETHTOOL, &ifr ) == -1) {
- close(skfd); return -1; }
- close(skfd); return edata.data; }
复制代码 Windows下最简单的办法是使用InternetGetConnectedState,此外还可以使用wmi的方式检查MSNdis_MediaConnectStatus。或者GetAdaptersInfo+GetIfEntry并检查MIB_IFROW的dwOperStatus
|
|