UNIX网络编程 -- 第十六章 ioctl操作

本文深入探讨了Linux网络编程中的ioctl操作,包括ioctl函数的使用及其与网络相关的六类请求,如套接口操作、文件操作、接口配置、ARP高速缓存操作、路由表操作和流系统。详细解释了每个请求的作用、数据类型和具体实现,帮助开发者掌握这一关键的系统接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第十六章  ioctl操作
 
传统上ioctl函数是用于那些普遍使用,但不适合归入其他类别的任何特性的系统接口。Posix去掉了ioctl,它通过
创建特殊的其功能已被Posix标准化的包裹函数来代替ioctl。这一章介绍和网络编程有关的ioctl操作。
 
1. ioctl函数
 
int ioctl(int d, int request, ...);
 
和网络有关的ioctl请求有6类:
套接口操作
文件操作
接口操作
ARP高速缓存操作
路由表操作
流系统
 
2. 套接口操作
 
类别请求描述数据类型
套接口SIOCATMASK在带外标志上吗int
 SIOCSPGRP设置套接口的进程ID和进程组IDint
 SIOCGPGPR获取套接口的进程ID和进程组IDint
 
SIOCATMASK: 如果套接口的读指针在带外标志上,则通过第三个参数指向的整数返回一个非零值,否则返回零。
 
3. 文件操作
 
类别请求描述数据类型
文件操作FIONBIO设置/清除非阻塞标志int
 FIOASYNC设置/清除异步I/O标志int
 FIONREAD获取接收缓冲区中数据的字节数int
 FIOSETOWN设置文件的进程ID或进程组IDint
 FIOGETOWN获取文件的进程ID或进程组IDint
 
FIONBIO: 这个请求和用fcntl的F_SETFL命令设置和清除O_NONBLOCK标志效果相同。
 
4. 接口配置
类别请求描述数据类型
接口SIOCGIFCONF获取所有接口的列表struct ifconf
 SIOCSIFADDR设置接口地址struct ifreq
 SIOCGIFADDR获取接口地址struct ifreq
 SIOCSIFFLAGS设置接口标志struct ifreq
 SIOCGIFFLAGS获取接口标志struct ifreq
 SIOCSIFDSTADDR设置点对点地址struct ifreq
 SIOCGIFDSTADDR获取点对点地址struct ifreq
 SIOCGIFBRDADDR获取广播地址struct ifreq
 SIOCSIFBRDADDR设置广播地址struct ifreq
 SIOCGIFNETMASK获取子网掩码struct ifreq
 SIOCSIFNETMASK设置子网掩码struct ifreq
 SIOCGIFMETRIC获取接口的测度(metric)struct ifreq
 SIOCSIFMETRIC设置接口的测度(metric)struct ifreq
 SIOCxxx  
 
 
 
5. ARP
 
类别请求描述数据类型
ARPSIOCSARP创建/修改ARP项struct arpreq
 SIOCGARP获取ARP项struct arpreq
 SIOCDARP删除ARP项struct arpreq
 
 
6. 路由
 
类别请求描述数据类型
路由SIOCADDRT增加路径struct rtentry
 SIOCDELRT删除路径struct rtentry
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值