Android P中判断网卡接口是否存在
发布日期:2021-05-07 14:11:14 浏览次数:21 分类:精选文章

本文共 1045 字,大约阅读时间需要 3 分钟。

参考文章:

#define  NET_NAME   "vnet0"int check_nic() {       struct ifreq ifr;    int skfd = socket(AF_INET, SOCK_DGRAM, 0);    int ret = 0;    if(skfd == -1) {           ret = -1;        goto END;    }    strcpy(ifr.ifr_name, NET_NAME);    if (ioctl(skfd, SIOCGIFFLAGS, &ifr) < 0) {           ret = -1;        goto END;    }    if(ifr.ifr_flags & IFF_RUNNING)        ret = 0;  // 网卡已插上网线    else ret = -1;END:    close(skfd);    return ret;}

socket()方法用法,在指定的域和指定的类型中创建一个套接字。

项目 Value
AF_APPLETALK Apple Computer Inc. Appletalk network,苹果计算机公司Appletalk网络
AF_INET Internet domain ,互联网域
AF_PUP Xerox Corporation PUP internet ,施乐公司PUP互联网
AF_UNIX Unix file system ,Unix文件系统

域AF_INET 和AF_UNI支持一下三种套接字类型

项目 Value
SOCK_STREAM 流套接字(TCP),顺序的,可靠的,双向的基于连接的数据流
SOCK_DGRAM 数据报套接字(UDP),
SOCK_RAW 提供原始网络协议访问。
//创建一个互联网域类型的,UDP方式的数据报套接字int skfd = socket(AF_INET, SOCK_DGRAM, 0);
#define SIOCGIFFLAGS 0x8913//获取网络接口,SIOCGIFFLAGS为ioctl获取网络接口的flagioctl(skfd, SIOCGIFFLAGS, &ifr)

用ifconfig去启动一个不存在的网络接口时,会提示8913错误

# ifconfig eth0 upifconfig: ioctl 8913: No such device
上一篇:Android输入法弹出时界面被挤压的问题
下一篇:使用repo和git上传代码的两种方式

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年04月19日 12时27分49秒