`
fp_moon
  • 浏览: 971421 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用套接字 ioctl 命令

 
阅读更多

使用 ioctl 套接字控制选项

通常,网络程序需要了解系统中所有有关网络接口和 IP 地址的可用信息。现在,未来的应用程序可以支持 IPv4 和 IPv6 双协议栈。ioctl 结构需要对指针进行遍历和操作,以处理 IPv4 和 IPv6 地址在长度上的差别(除了使用合适的套接字结构 sockaddr_in6 或 sockaddr_storage 之外)。

AIX Version 5.3 提供了很多 ioctl 套接字控制选项,以提取各种有关网络接口的信息。这些 ioctl 命令用于查询接口的状态并对其属性进行操作。下面的部分中包含了一些有用的命令的代码段。有关 ioctl 命令的完整列表,请参见参考资料部分。

ioctl 命令所使用的结构

下面的清单介绍了一些最重要的结构,使用 ioctl 套接字命令时常常用到这些结构。


清单 1. struct ifreq (/usr/include/net/if.h)

				
/* Interface request structure used for socket
 * ioctl's.  All interface ioctl's must have parameter
 * definitions which begin with ifr_name.  The
 * remainder may be interface specific.
 */
struct  ifreq {
#ifndef IFNAMSIZ
#define IFNAMSIZ        16
#endif
        char    ifr_name[IFNAMSIZ]; 
        union {
                struct  sockaddr ifru_addr;
                struct  sockaddr ifru_dstaddr;
                struct  sockaddr ifru_broadaddr;
                __ulong32_t     ifru_flags;
                int     ifru_metric;
                caddr_t ifru_data;
                u_short ifru_site6;
                __ulong32_t   ifru_mtu;
                int     ifru_baudrate;
        } ifr_ifru;

Following macros are provided for convenience

#define ifr_addr        ifr_ifru.ifru_addr      /* address */
#define ifr_dstaddr     ifr_ifru.ifru_dstaddr   /* other end of p-to-p link */
#define ifr_broadaddr   ifr_ifru.ifru_broadaddr /* broadcast address */
#define ifr_flags       ifr_ifru.ifru_flags     /* flags */
#define ifr_metric      ifr_ifru.ifru_metric    /* metric */
#define ifr_data        ifr_ifru.ifru_data      /* for use by interface */
#define ifr_site6       ifr_ifru.ifru_site6     /* IPv6 site index */
#define ifr_mtu         ifr_ifru.ifru_mtu       /* mtu of interface */
#define ifr_isno        ifr_ifru.ifru_data      /* pointer to if_netopts */
#define ifr_baudrate    ifr_ifru.ifru_baudrate  /* baudrate of interface */
};
      



清单 2. struct ifconf (/usr/include/net/if.h)

				
/*
 * Structure used in SIOCGIFCONF request.
 * Used to retrieve interface configuration
 * for machine (useful for programs which
 * must know all networks accessible).
 */
struct  ifconf {
        int     ifc_len;                /* size of associated buffer */
        union {
                caddr_t ifcu_buf;
                struct  ifreq *ifcu_req;
        } ifc_ifcu;

Following macros are provided for convenience

#define ifc_buf ifc_ifcu.ifcu_buf       /* buffer address */
#define ifc_req ifc_ifcu.ifcu_req       /* array of structures returned */
};
      

 

详细内容:http://www.ibm.com/developerworks/cn/aix/library/au-ioctl-socket.html#resources

分享到:
评论

相关推荐

    Windows网络编程技术_套接字选项和IO控制命令(资料+源码)

    本书专门讨论Windows网络编程技术。...IPX选项级别 2279.2 IOCTLSOCKET和WSAIOCTL 2319.2.1 标准I/O控制命令 2329.2.2 其他I/O控制命令 2339.2.3 安全套接字层的I/O控制命令 2399.2.4 ATM I/O控制命令 2419.3 小结 242

    ubuntu18.04 在QT下调用V4L2的ioctl函数来实现采集视频流 把采集到的视频流在控件上显示出来 同时采集两个相机

    对字符设备、块设备、及套接字,非常方便扩充新的命令)。 QT版本(qt-opensource-linux-x64-5.13.2)。 使用了QT的线程, 相机的整个采图过程在子线程中进行,可以避免卡住主线程。 并且把抓到的图转为QImage对象,...

    linux programming instances网络编程教程 附源代码

    全书由13章组成,内容涉及到Lindx系统编程基础、TCP/UDP协议、套接字编程概念及I/O模型、高级编程中需要用到的进程问通信同步、多路复用、多线程编程和一些高级套接字控制方法、IPv6介绍以及网络安全等。...

    windows网络编程技术

    IRLMP选项级别2189.1.4 IPPROTO_IP选项级2229.1.5 IPPROTO_TCP选项级别2279.1.6 NSPROTO_IPX选项级别2279.2 IOCTLSOCKET和WSAIOCTL2319.2.1 标准I/O控制命令2329.2.2 其他I/O控制命令2339.2.3 安全套接字层的I/O控制...

    Windows网络编程(PDF).rar

    1768.2.2 WSAAsyncSelect 1798.2.3 WSAEventSelect 1838.2.4 重叠模型 1888.2.5 完成端口模型 1988.3 I/O模型的问题 2068.4 小结 206第9章 套接字选项和I/O控制命令 2079.1 套接字选项 2079.1.1 SOL_SOCKET选项级别 ...

    windows网络编程(PDF)

    IRLMP选项级别2189.1.4 IPPROTO_IP选项级2229.1.5 IPPROTO_TCP选项级别2279.1.6 NSPROTO_IPX选项级别2279.2 IOCTLSOCKET和WSAIOCTL2319.2.1 标准I/O控制命令2329.2.2 其他I/O控制命令2339.2.3 安全套接字层的I/O控制...

    Windows网络编程

    1768.2.2 WSAAsyncSelect 1798.2.3 WSAEventSelect 1838.2.4 重叠模型 1888.2.5 完成端口模型 1988.3 I/O模型的问题 2068.4 小结 206第9章 套接字选项和I/O控制命令 2079.1 套接字选项 2079.1.1 SOL_SOCKET选项级别 ...

    windows网络编程

    IRLMP选项级别2189.1.4 IPPROTO_IP选项级2229.1.5 IPPROTO_TCP选项级别2279.1.6 NSPROTO_IPX选项级别2279.2 IOCTLSOCKET和WSAIOCTL2319.2.1 标准I/O控制命令2329.2.2 其他I/O控制命令2339.2.3 安全套接字层的I/O控制...

    《Windows网络编程技术》.rar

    IRLMP选项级别2189.1.4 IPPROTO_IP选项级2229.1.5 IPPROTO_TCP选项级别2279.1.6 NSPROTO_IPX选项级别2279.2 IOCTLSOCKET和WSAIOCTL2319.2.1 标准I/O控制命令2329.2.2 其他I/O控制命令2339.2.3 安全套接字层的I/O控制...

Global site tag (gtag.js) - Google Analytics