Linux下檢測網絡卡與網線的連線狀態

2021-06-19 22:55:51 字數 1724 閱讀 6270

在機頂盒的網路連線中,其中有一項就是檢測網絡卡與網線是否連線,當沒有連線網線時,通過瀏覽器開啟錯誤頁面提示網線未連線。那麼如何檢測網絡卡與網線是否連線。

一、使用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...