簡介
在資料傳輸過程**現網路偶然間斷開的情況,考慮是否為網線接觸不良。因此寫乙個程式監測網路的硬體狀態。
程式的主要原理是參考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 根據使用者的網路狀態進行智慧型處理,節省使用者流量,提高使用者體驗 沒有網路 只顯示離線的快取...