108-网络接口
来源:互联网 发布:单片机实验认识实验 编辑:程序博客网 时间:2024/05/18 01:23
1. 接口
网卡,是让计算机通向外部世界的一扇大门。但是在计算机的世界里,一般这扇门称为“接口(Interface)”。接口是物理意义上的设备。
在 Linux/Unix 中,我们使用 ifconfig
命令来查看接口信息:
图1 接口信息
接口通常都有自己的属性,比如在图1 中我们可以看到:
- 有自己的名字,比如 ens33, lo, virbr0.
- 有一些标志位,比如 UP, BROADCAST, RUNNING, MULTICAST 等等。
- 有 ip 地址,子网掩码,广播地址
- 有物理地址,比如 ether 00:0c:29:03:40:40
- …
2. 接口名称与接口索引号
每个接口都有自己的名字,比如图 1 中三个接口名字分别是 ens33, lo, virbr0.
除了 ifconfig 中列举的属性外,接口还有自己的编号,也称为接口索引号(interface index)。
程序 if_nametoindex 能帮我们根据接口名字查看接口对应的索引号:
图2 查看接口的索引号。
该程序托管在 http://git.oschina.net/ivan_allen/unp 上,程序位于路径unp/program/test/interface
下.
程序 if_indextoname 能帮我们根据接口索引号查看接口对应的名字:
图3 查看接口名称
从图 3 可以看到,接口 0 是不存在的。写程序的时候,通常用 0 来表示不存在的接口。
3. 相关函数
图 2 和图 3 中的程序就是使用下面这两个函数实现的,使用起来相当简单。当然代码我就不贴出来了,你可以自己去 unp/program/test/interface
路径下查看源代码。
unsigned int if_nametoindex(const char *ifname);char *if_indextoname(unsigned int ifindex, char *ifname);
还有一对函数(第二个用是释放资源的),主要用来:
struct if_nameindex *if_nameindex(void);void if_freenameindex(struct if_nameindex *ptr);
其中 struct if_nameindex 至少包含两个成员:
struct if_nameindex { unsigned int if_index; char *if_name; // 其它成员}
if_nameindex 函数返回一个数组,该数组最后一个元素是 NULL.
4.总结
- 掌握接口的基本概念
- 接口名称和接口索引
阅读全文
0 0
- 108-网络接口
- 网络接口
- 网络接口
- 网络接口
- 网络接口
- 路由器网络接口解析
- 提取网络接口信息
- 网络接口源码导读
- 网络接口源码导读
- 网络接口调试器
- Ubuntu网络接口配置
- 一些天气预报网络接口
- 网络接口配置文件汇总
- linux网络socket接口
- Linux 网络接口
- winpcap--枚举网络接口
- Winsock网络编程接口
- Android 网络接口
- 在加载Android studio程序的时候,会爆出这个的错误的解决方式
- parseInt是用于字符串,而不是用于数字
- php如何禁用eval函数
- 性能测试必备知识
- dup和dup2原理
- 108-网络接口
- SpringMVC的文件上传下载
- 关于宋宝华linux驱动学习视频的读后感
- 有监督回归:最小二乘学习法
- 值传递,地址传递,引用传递
- plsql常用快捷键
- Linux查看CPU和内存使用情况
- xamarin android 布局尺寸了解
- awk 字符串类型数字类型的相互转换和strtonum函数