linux 監測網線插拔狀態

2021-09-29 11:17:30 字數 1833 閱讀 3908

簡介

在資料傳輸過程**現網路偶然間斷開的情況,考慮是否為網線接觸不良。因此寫乙個程式監測網路的硬體狀態。

程式的主要原理是參考ifconfig命令。當網線連線時執行ifconfig命令會列印「runing」字串。當網線斷開時則不會列印。參考ifconfig的原始碼實現了如下**。

**會將網路狀態寫入當前資料夾下的net.txt檔案中。

#include #include #include #include #include #include #include #include #include int net_detect(char* net_name)

strcpy(ifr.ifr_name, net_name);

if(ioctl(skfd, siocgifflags, &ifr) <0 )

file *fp = null;

fp = fopen("./net.txt","a");

if (!fp)

//判斷是否存在iff_running標誌

if(ifr.ifr_flags & iff_running)

else

close(skfd);

fclose(fp);

return 0;

}void handle_sigint(int num)

void msleep(long t)

int main(int argc, char** ar**)

int time = 1000;

if (argc == 3)

time = atoi(ar**[2]);

//重定向輸出流時,程式結束才會寫入,需要捕獲ctrl + c訊號

// signal(sigint,handle_sigint);

while(1)

return 0;

}

來自:

1.cat /sys/class/net/eth0/carrier 

如果carrier為1表示connect,否則disconnect

2.netlink實現網絡卡上下線監控

#include #include #include #include #include #include #include #include #include #include #include #define buflen 20480  

int main(int argc, char *ar**)

; int len = buflen;

struct sockaddr_nl addr;

struct nlmsghdr *nh;

struct ifinfomsg *ifinfo;

struct rtattr *attr;

fd = socket(af_netlink, sock_raw, netlink_route);

setsockopt(fd, sol_socket, so_rcvbuf, &len, sizeof(len));

memset(&addr, 0, sizeof(addr));

addr.nl_family = af_netlink;

addr.nl_groups = rtnlgrp_link;

bind(fd, (struct sockaddr*)&addr, sizeof(addr));

while ((retval = read(fd, buf, buflen)) > 0)

} printf("\n");

} }

return 0;

}

linux 監測網線插拔狀態

在資料傳輸過程中出現網路偶然間斷開的情況,考慮是否為網線接觸不良。因此寫乙個程式監測網路的硬體狀態。程式的主要原理是參考ifconfig命令。當網線連線時執行ifconfig命令會列印 runing 字串。當網線斷開時則不會列印。參考ifconfig的原始碼實現了如下 會將網路狀態寫入當前資料夾下的...

監測網路狀態

ios開發網路篇 監測網路狀態 一 說明 在網路應用中,需要對使用者裝置的網路狀態進行實時監控,有兩個目的 1 讓使用者了解自己的網路狀態,防止一些誤會 比如怪應用無能 2 根據使用者的網路狀態進行智慧型處理,節省使用者流量,提高使用者體驗 沒有網路 只顯示離線的快取資料 蘋果官方提供了乙個叫rea...

iOS 監測網路狀態

ios開發網路篇 監測網路狀態 ios開發網路篇 監測網路狀態 一 說明 在網路應用中,需要對使用者裝置的網路狀態進行實時監控,有兩個目的 1 讓使用者了解自己的網路狀態,防止一些誤會 比如怪應用無能 2 根據使用者的網路狀態進行智慧型處理,節省使用者流量,提高使用者體驗 沒有網路 只顯示離線的快取...