nt ioctl( int fd, int request, .../* void *arg */ );
返回0:成功    -1:出错

第三个参数总是一个指针,但指针的类型依赖于request参数。
我们可以把和网络相关的请求划分为6类:
套接口操作
文件操作
接口操作
ARP高速缓存操作
路由表操作
流系统
下表列出了网络相关ioctl请求的request参数以及arg地址必须指向的数据类型:

类别

Request

说明

数据类型

 
 

SIOCATMARK 
SIOCSPGRP 
SIOCGPGRP

是否位于带外标记 
设置套接口的进程ID 或进程组ID 
获取套接口的进程ID 或进程组ID

int 
int 
int

 

FIONBIN 
FIOASYNC 
FIONREAD 
FIOSETOWN 
FIOGETOWN

设置/ 清除非阻塞I/O 标志 
设置/ 清除信号驱动异步I/O 标志 
获取接收缓存区中的字节数 
设置文件的进程ID 或进程组ID 
获取文件的进程ID 或进程组ID

int 
int 
int 
int 
int

 

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

ARP

SIOCSARP 
SIOCGARP 
SIOCDARP

创建/ 修改ARP 表项 
获取ARP 表项 
删除ARP 表项

struct arpreq 
struct arpreq 
struct arpreq

 

SIOCADDRT 
SIOCDELRT

增加路径 
删除路径

struct rtentry 
struct rtentry

I_xxx

socket最常用到的结构体: struct ifreq 定义在<net/if.h>.(包括struct ifconf/ifr_flags等的定义)

ioctl , fcntl socket操作详解相关推荐

  1. PHP SOCKET编程详解

    这篇文章主要介绍了PHP SOCKET编程详解,需要的朋友可以参考下 1. 预备知识 一直以来很少看到有多少人使用php的socket模块来做一些事情,大概大家都把它定位在脚本语言的范畴内吧,但是其实 ...

  2. Socket模型详解

    Socket模型详解 两种I/O模式 一.选择模型 二.异步选择 三.事件选择 四.重叠I/O模型 五.完成端口模型 五种I/O模型的比较 两种I/O模式 1. 两种I/O模式 阻塞模式:执行I/O操 ...

  3. C 和 C++ 文件操作详解

    来源:http://www.cnblogs.com/likebeta/archive/2012/06/16/2551662.html 来源:http://www.cnblogs.com/likebet ...

  4. VC++常用数据类型及其操作详解 [

    一.VC常用数据类型列表 二.常用数据类型转化 2.1数学类型变量与字符串相互转换 2.2 CString及string,char *与其他数据类型的转换和操作 ●CString,string,cha ...

  5. VC++常用数据类型及其操作详解(非常经典,共同分享)

    友情提示: 为了方便你更好的学习和阅读,也更好的体现尊重原创作者的劳动成果,请您直接查看转载原本链接: http://snailflying.blog.hexun.com/8219350_d.html ...

  6. VC++常用数据类型及其操作详解

    一.VC常用数据类型列表 二.常用数据类型转化 2.1数学类型变量与字符串相互转换 2.2 CString及string,char *与其他数据类型的转换和操作 ●CString,string,cha ...

  7. Linux的SOCKET编程详解

    Linux的SOCKET编程详解 一. 网络中进程之间如何通信 进程通信的概念最初来源于单机系统.由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进 程之间既互不干扰又协调一致工作,操作系统 ...

  8. socket接口详解

    socket接口详解 socket概述 接口详解 socket() bind() listen() accept() connect() send() recv() sendto() recvfrom ...

  9. 常用socket函数详解

    常用socket函数详解 关于socket函数,每个的意义和基本功能都知道,但每次使用都会去百度,参数到底是什么,返回值代表什么意义,就是说用的少,也记得不够精确.每次都查半天,经常烦恼于此.索性都弄 ...

最新文章

  1. js各种图表组件网站
  2. 【django轻量级框架】django项目部署到阿里云服务器流程
  3. Node.js 连接数据库
  4. 每天一个linux命令:cat
  5. 论文阅读:Joint Learning of Single-image and Cross-image Representations for Person Re-identification
  6. Leetcode 144. 二叉树的前序遍历 (每日一题 20210820)
  7. snmp 获取 虚拟机硬盘_服务器出故障了怎么办?SNMP告警七步走
  8. python 源码保护_Python代码保护
  9. css align-items的测试
  10. python 最优化算法库_哈工大硕士生用?Python 实现了 11 种经典数据降维算法,源代码库已开放...
  11. python不同模式打开文件的完全列表
  12. sqlite排序规则
  13. list 转 json,以及 json 解析
  14. JSP常用内置对象方法
  15. Visual Studio 2017 企业版密匙
  16. fatal: bad boolean config value ‘“false”‘ for ‘http.sslverify
  17. 残忍的世界,我们要学会要坚强。
  18. LeetCode 167.Two Sum II 解题报告
  19. 挑战杯获奖作品_小挑战杯-创青春创新创业竞赛
  20. 18个开源的Java CMS

热门文章

  1. LeetCode OJ:Construct Binary Tree from Preorder and Inorder Traversal(从前序以及中序遍历结果中构造二叉树)...
  2. Cannot create a session after the response has been committed
  3. Can't connect to MySQL server on 'localhost' (1...
  4. 第五章 MongoDb索引优化 5.6
  5. Nokia手机短信发件人显示乱码问题解决
  6. Gym - 101173H Hangar Hurdles(bfs+克鲁斯卡尔重构树)
  7. HDU - 5017 Ellipsoid(三分套三分/模拟退火)
  8. HDU - 5876 Sparse Graph(bfs+set)
  9. java 线程池 状态_【Java多线程】线程状态、线程池状态
  10. Timus1286(欧几里德算法的应用)