一、概述

在本书中有两个地方都对这个函数进行了介绍,其实还有很多地方需要这个函数。ioclt函数传统上一直作为纳西而不适合归入其他精细定义类别的特性的系统接口。网络程序(特别是服务器程序)经常在程序启动执行后使用ioctl获取所在主机全部网络接口的信心,包括:接口地址、是否支持广播、是否支持多播。

二、ioctl函数

#include <unistd.h>
int ioctl(int fd,int request,...../* void *arg  /);
//返回:若成功则为0.失败则我-1

其中第三个参数总是一个指针,但指针的类型依赖于request参数。我们可以把和网络相关的请求划分为6类:

1)套接字操作

2)文件操作

3)接口操作

4)ARP高速缓存操作

5)路由表操作

6)流系统

不但某些ioclt操作和某些fcntl操作功能重叠(譬如把套接字设置为非阻塞),而且某些操作可以使用ioctl以不止一种方式制定(譬如设置套接字的进程组属主)。下表列出了网络相关ioctl请求的request参数以及arg地址必须指向的数据类型。

三、套接字操作

明确要求套接字ioctl请求有三个,它们都要求ioctl的第三个参数是指向某个整数的一个指针。

1)SIOCATMARK   如果本套接字的读指针当前位于带外标记,那就通过由第三个参数指向的帧数放回一个非0值,否则返回一个0值。

2)SIOCGPGRP    通过由第三个参数指向的整数返回本套接字的进程ID或进程组ID,该ID指定针对本套接字的SIGIO或SIGURG信号的接受进程。

3)SIOCSPGR       本套接字的进程ID或进程组ID设置成由第三个参数指向的整数,该ID指定对本套接字的SIGIO或SIGURG信号的接受进程。

四、文件操作

以FIO打头的可能还适用于除套接字外某些特定类型的文件。都要求ioctl的第三个参数指向一个帧数。

1)FIONBIO     根据ioctl的第三个参数指向一个0值或非0值,可消除或设置本套接字的非阻塞式I/O标志。本请求和O_NONBLOCK文件状态标志等效,而可以通过fcntlde F_SETFL命令清除或设置该标志。

2)FIOASYNC 根据ioctl的第三个参数指向一个0值或非0值,可消除或设置本套接字的信号驱动异步I/O标志,它决定是否收取针对本套接字的异步I/O信号。本请求和O_ASYNC文件状态标志等效,而可以通过fcntl的F_SETFL命令清除或设置该标志

3)FIONREAD   通过由ioctl的第三个参数指向的整数返回当前在本套接字接受缓冲区中的字节数。

4) FIOSETOWN  对于本套接字和SIOCSPGRP等效

5) FIOGETOWN  对于套接字和SIOCGPGRP等效。

五、接口配置

六、get_ifi_info函数

七、接口操作

八、arp高速缓存操作

九、路由表操作

UNIX网络编程--ioctl操作(十七)相关推荐

  1. unix网络编程——ioctl 函数的用法详解

    https://blog.csdn.net/ashlingr/article/details/8227603

  2. 网编编程必看书籍:unix网络编程

    unix网络编程被誉为圣经,该书主要讲socket套接字相关,socket API,从底层剖析网络编程.网络编程中需要用到的一些经典函数,多路复用函数,这些都值得去反复学习研究. 目录: 录 Part ...

  3. linux下网络编程设置非阻塞,UNIX网络编程 非阻塞connect的实现

    一.<UNIX网络编程>-非阻塞connect 在一个TCP套接口被设置为非阻塞之后调用connect,connect会立即返回EINPROGRESS错误,表示连接操作正在进行中,但是仍未 ...

  4. UNIX网络编程.卷1,套接字联网API(第3版)(中文版)(Stevens经典著作,两位顶级网络编程专家应邀执笔修订)...

    UNIX网络编程.卷1,套接字联网API(第3版)(中文版)(Stevens经典著作,两位顶级网络编程专家应邀执笔修订) 基本信息 原书名: Unix Network Programming, Vol ...

  5. 《Unix网络编程卷1-套接字联网API》第一个例子编译 不通过问题解决

    <Unix网络编程卷1-套接字联网API>是本好书. 但是第一个例子不是很好编译. 需要如下步骤: 本人机器CentOS 5.4 1.下载源码 unpv13e解压到任意目录 然后按其rea ...

  6. UNIX网络编程之旅-配置unp.h头文件环境

    最近在学习Unix网络编程(UNP),书中steven在处理网络编程时只用了一个#include "unp.h"  相当有个性并且也很便捷 于是我把第三版的源代码编译实现了这个过程 ...

  7. 16.unix网络编程一卷 unp.h

    unix网络编程 --ubuntu下建立编译环境 1.安装编译器,安装build-essential sudo apt-get install build-essential 2.下载本书的头文件 下 ...

  8. 【LINUX/UNIX网络编程】之使用消息队列,信号量和命名管道实现的多进程服务器(多人群聊系统)...

    RT,使用消息队列,信号量和命名管道实现的多人群聊系统. 本学期Linux.unix网络编程的第三个作业. 先上实验要求: 实验三  多进程服务器 [实验目的] 1.熟练掌握进程的创建与终止方法: 2 ...

  9. 再读Socket编程——《UNIX网络编程(卷一)》学习点滴

    原先曾以Socket编程为入口开始自己的新的学习,毕竟未曾致用,时至今日已比较生疏.借着阅读<UNIX网络编程(卷一)>(简称UNPv1)的机会,正好复习一番,而且希望将新的感受记录下来. ...

最新文章

  1. WPF:跨应用程序会话保持和还原应用程序范围的属性
  2. 【机器学习实战】第7章 集成方法(随机森林和 AdaBoost)
  3. SharePoint 2013中的视频体验增强(1)——把大象装进冰箱
  4. 网页上的静止导航脚本
  5. chrome经常崩溃解决过程
  6. Ajax和JSON-学习笔记04【JSON_解析器】
  7. Windows 2003系统下桌面清理向导
  8. leetcode 559. N 叉树的最大深度(Java版,N叉树的深度优先搜索)
  9. ipv6寻址_什么是IPV4寻址?
  10. PHP常用函数(收集)
  11. python类方法和静态方法_Python 中的方法、静态方法(static method)和类方法(class method)...
  12. Linux readelf命令
  13. 强化学习用于电力系统决策与控制(一)——频率调整
  14. 趁年轻,多尝试一些富有挑战的工作吧
  15. vue-cli 项目打包后 代理接口报404错误 解决办法!
  16. java控制语句_java基础之 控制语句
  17. python 爬取有道词典的翻译 *渔夫版
  18. python 调用Google Translate API 翻译
  19. 基本数据类型之整数类型变量
  20. 最新2022财报,亚信科技稳步转型

热门文章

  1. BZOJ-1005 明明的烦恼
  2. SQL Server日志清除的两种方法 .
  3. ecshop中ajax的调用原理
  4. 电信的 DNS 服务器地址
  5. BMP图形文件分析类(c#)
  6. Session 详解
  7. CUDA Samples: Image Process: BGR to BGR565
  8. OpenCV3.3中 K-最近邻法(KNN)接口简介及使用
  9. Ubuntu14.04 32位上编译VLC2.2.0源码操作步骤
  10. vigra1.8.0的使用