首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

应用套接字 ioctl 命令

2012-06-27 
使用套接字 ioctl 命令使用 ioctl 套接字控制选项通常,网络程序需要了解系统中所有有关网络接口和 IP 地址

使用套接字 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

热点排行