C语言如何实现linux网卡检测精简版

这篇文章给大家分享的是有关C语言如何实现linux网卡检测精简版的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

万能的网络,通过getifaddrs可以大大减少编码量,获得 C语言实现linux网卡检测-改进版 同样的效果。

C语言如何实现linux网卡检测精简版

#include<stdlib.h>
#include<stdio.h>
#include<string.h>

#include<sys/socket.h>
#include<sys/ioctl.h>
#include<linux/if.h>
#include<ifaddrs.h>
#include<arpa/inet.h>


intc_ifaddrs_netlink_status(constchar*if_name)
{
structifaddrs*ifa=NULL,*ifList;

if(getifaddrs(&ifList)<0)
{
return-1;
}

for(ifa=ifList;ifa!=NULL;ifa=ifa->ifa_next)
{
if(ifa->ifa_addr->sa_family==AF_INET)
{
if(strcmp(ifa->ifa_name,if_name)==0)
{
if(!(ifa->ifa_flags&IFF_UP))
{
printf("DEVICE_DOWN\r\n");
freeifaddrs(ifList);
return1;
}

if(!(ifa->ifa_flags&IFF_RUNNING))
{
printf("DEVICE_UNPLUGGED\r\n");
freeifaddrs(ifList);
return2;
}

printf("DEVICE_LINKED\r\n");
freeifaddrs(ifList);
return3;
}
}
}

printf(stderr,"DEVICE_NONE\r\n");
freeifaddrs(ifList);
return0;
}

intmain(intargc,char*argv[])
{
inti=0;
if(argc!=2)
{
fprintf(stderr,"usage:%s<ethname>\r\n",argv[0]);
return-1;
}

i=c_ifaddrs_netlink_status(argv[1]);

fprintf(stderr,"c_ifaddrs_netlink_statusif_status=%d\n",i);
return0;
}

感谢各位的阅读!关于“C语言如何实现linux网卡检测精简版”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

发布于 2021-05-30 14:07:22
收藏
分享
海报
0 条评论
174
上一篇:C语言如何实现简单学生管理系统 下一篇:C语言如何实现俄罗斯方块
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码