我的需求只是要判斷某種網絡是否可用,系統(tǒng)中有局域網eth0和3G撥號鏈接ppp0,有不同的Socket要創(chuàng)建在各自的網絡上,寫如下函數,傳用網絡名就可以判斷網絡是否可用。
// 檢測網絡連接
// routeName: 網絡連接名稱,如ppp0、eth0等
// 返回值: 網絡正常返回0,異常返回-1
int CheckNetLink(const char *routeName)
{
register int fd, intrface;
struct ifreq buf[16];
struct ifconf ifc;
if ((fd = socket (AF_INET, SOCK_DGRAM, 0)) >= 0)
{
ifc.ifc_len = sizeof(buf);
ifc.ifc_buf = (caddr_t) buf;
if (!ioctl(fd, SIOCGIFCONF, (char *) &ifc))
{
intrface = ifc.ifc_len / sizeof (struct ifreq);
while (intrface-- > 0)
{
if (strcmp(buf[intrface].ifr_name, routeName) == 0)
{
ioctl(fd, SIOCGIFFLAGS, (char *) &buf[intrface]);
if ((buf[intrface].ifr_flags & IFF_UP) && (buf[intrface].ifr_flags & IFF_RUNNING))
{
//printf("\n%s is UP & RUNNING\n", routeName);
return OK;
}
else
{
//printf("\n%s is DOWN\n", routeName);
return ERROR;
}
}
}
//printf("\n%s is not exist\n", routeName);
return ERROR;
}
}
return ERROR;
}
關鍵詞標簽:Linux
相關閱讀
熱門文章 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 多種操作系統(tǒng)NTP客戶端配置 Linux操作系統(tǒng)修改IP
人氣排行 Linux下獲取CPUID、硬盤序列號與MAC地址 dmidecode命令查看內存型號 linux tc實現ip流量限制 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 linux下解壓rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 關機、重啟、注銷 命令 查看linux服務器硬盤IO讀寫負載