socket网络编程中的ioctl()函数
来源:互联网 发布:马克加索尔数据 编辑:程序博客网 时间:2024/06/17 02:39
网上关于socket网络编程中的ioctl()函数的资料整理收集。此博客作为自己的笔记。
Linux网络程序与内核交互的方法是通过ioctl来实现的,ioctl与网络协议栈进行交互,可得到网络接口的信息,网卡设备的映射属性和配置网络接口.并且还能够查看,修改,删除ARP高速缓存的信息
ARP协议的基本内容,就是当仅仅知道对方主机的IP地址要求获取对方的MAC地址。
ARP高速缓存里边保存了之前进行ARP会话时返回的ARP应答中的IP地址和MAC地址对应列表。一般一条记录保存20分钟左右。
目的是:下次再要访问ARP高速缓存中的IP地址的主机时,不需要再次发送ARP请求去获取MAC地址。直接从高速缓存中读取就可以了。可以有效缓解链路的压力。
在IP以太网中,当一个上层协议要发包时,有了该节点的IP地址,ARP就能提供该节点的MAC地址。 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。ARP协议就起到这个作用
请求码
类别
Request
说明
数据类型
接
口
SIOCGIFCONF
SIOCSIFADDR
SIOCGIFADDR
SIOCSIFFLAGS
SIOCGIFFLAGS
SIOCSIFDSTADDR
SIOCGIFDSTADDR
SIOCGIFBRDADDR
SIOCSIFBRDADDR
SIOCGIFNETMASK
SIOCSIFNETMASK
SIOCGIFMETRIC
SIOCSIFMETRIC
SIOCGIFMTU
SIOCxxx
获取所有接口的清单
设置接口地址
获取接口地址
设置接口标志
获取接口标志
设置点到点地址
获取点到点地址
获取广播地址
设置广播地址
获取子网掩码
设置子网掩码
获取接口的测度
设置接口的测度
获取接口MTU
(还有很多取决于系统的实现)
struct ifconf
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
struct ifreq
//查询目标IP地址
err=ioctl(s,SIOCGIFDSTADDR,&ifr);
if(!err){
inet_ntop(AF_INET,&sin->sin_addr.s_addr,ip,16);
printf("SIOCGIFDSTADDR:%s\n",ip);
//查询子网掩码
err=ioctl(s,SIOCGIFNETMASK,&ifr);
if(!err){
inet_ntop(AF_INET,&sin->sin_addr.s_addr,ip,16);
printf("SIOCGIFNETMASK:%s\n",ip);
- socket网络编程中的ioctl()函数
- ioctl函数在网络编程中的应用
- 网络编程之ioctl函数
- Socket网络编程中的函数详解
- socket编程之三:socket网络编程中的常用函数
- Linux 网络编程之ioctl函数
- Linux 网络编程之ioctl函数
- Linux 网络编程之ioctl函数 .
- Linux 网络编程之ioctl函数
- Linux 网络编程之ioctl函数
- Linux 网络编程之ioctl函数
- Linux 网络编程之ioctl函数
- Linux 网络编程之ioctl函数
- Linux 网络编程之ioctl函数
- Linux 网络编程之ioctl函数
- Linux 网络编程之ioctl函数
- socket网络编程函数
- 《网络编程》ioctl 操作
- 【Valid Parentheses】 --MyLeetCode(六)
- MySQL无法重启报错Warning: World-writable config file ‘/etc/my.cnf’ is ignored的解决方法
- js和react判断上传文件类型
- git 版本(文件)差别比较
- 压力测试工具JMeter入门教程
- socket网络编程中的ioctl()函数
- Jsp与Servlet的区别与联系
- 使用ET2000和Wireshak分析Ethercat主站的实时性
- Ubuntu 16.04 上的 NGINX Web 服务器!
- CSDN博客积分规则
- SPSS数据分析流程经验总结
- Centos6.8 下 Node.js 的安装
- 1899: [Zjoi2004]Lunch 午餐
- 最长最短单词