在機頂盒的網路連線中,其中有一項就是檢測網絡卡與網線是否連線,當沒有連線網線時,通過瀏覽器開啟錯誤頁面提示網線未連線。那麼如何檢測網絡卡與網線是否連線。
一、使用ioctl向socket傳送siocethtool
命令字
#include#include#include#include #include #include #include #include #include #include #include int get_netlink_status(constchar *if_name);
int main()
printf("net link status: %d\n", get_netlink_status("eth0"));
return 0;
}// if_name like "ath0", "eth0". notice: call this function
// need root privilege.
// return value:
// -1 -- error , details can check errno
// 1 -- inte***ce link up
// 0 -- inte***ce link down.
int get_netlink_status(constchar *if_name)
close(skfd);
return edata.data;
}
方法二: 使用ifconfigl命令能很方便的檢視網絡卡與網線是否連通:
# ifconfig eth0
eth0 link encap:ethernet hwaddr 00:25:35:68:cc:d6
inet addr:192.168.1.168 bcast:192.168.1.255 mask:255.255.255.0
inet6 addr: fe80::215:c5ff:fe18:ccd6/64 scope:link
up broadcast running multicast mtu:1500 metric:1
rx packets:130722 errors:0 dropped:0 overruns:0 frame:0
tx packets:112560 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
rx bytes:104371099 (99.5 mib) tx bytes:20518584 (19.5 mib)
interrupt:16
其中的running就表示網絡卡與網線正常鏈結,拔掉網線再執行此命令就會發現running不在了。
linux系統提供了popen/pclose程序管道讓c和shell很方便的互動,下面c**結合shell命令檢測網絡卡與網線連通狀況:
#include #include #include #include int getnetstat( )
else
pclose(read_fp);
}else
return ret;
}int main()
linux下檢測網絡卡與網線連通狀態
linux下檢測網絡卡與網線連線狀態,使用ioctl向socket傳送siocethtool命令字。link stat.c include stdio.h include stdlib.h include string h include fcntl.h include errno h includ...
Linux下檢測網絡卡與網線的連線狀態
在機頂盒的網路連線中,其中有一項就是檢測網絡卡與網線是否連線,當沒有連線網線時,通過瀏覽器開啟錯誤頁面提示網線未連線。那麼如何檢測網絡卡與網線是否連線。一 使用ioctl向socket傳送siocethtool命令字 cpp view plain copy font size 18px includ...
linux下檢測網線拔出
看了很多方法 當然也可以實現 但是實現起來比較繁瑣,有時候還不一定成功 其實很簡單 在命令列檢視 sys class net eth0 carrier 即可知道網線是否拔了 carrier 1 網線正常 carrier 0 網線斷開 拔掉網線的時候,同時debug也會輸出提示 eth0 link d...