您的位置:首页 > 编程语言

socket编程总结(三) struct sockaddr_in /struct sockaddr_in6/struct addrinfo 结构体

2016-07-12 10:48 549 查看
//////////////////////////////////////lb

IPV4:

//struct sockaddr_in {

//    __uint8_t sin_len;

//    sa_family_t sin_family;//iPv4地址族

//    in_port_t sin_port;     //端口号

//    struct in_addr sin_addr;//IPV4 address

//    char sin_zero[8];

//};

////////////////////////////////////lb

IPV6:

//  struct sockaddr_in6 {

//  __uint8_t sin6_len;    /* length of this struct(sa_family_t) */

//  sa_family_t sin6_family;/* AF_INET6 (sa_family_t) */

//  in_port_t sin6_port;    /* Transport layer port # (in_port_t) */

// __uint32_t sin6_flowinfo;/* IP6 flow information */

// struct in6_addr sin6_addr;/* IP6 address */

//  __uint32_t sin6_scope_id;/* scope zone index */

//                      };

////////////////////////////////////lb

getAddrInfo中的参数:

//  struct addrinfo {

//         int ai_flags;/* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */

//        int ai_family;/* PF_xxx */地址族,

//        int ai_socktype;/* SOCK_xxx */套接字类型

//        int ai_protocol;/* 0 or IPPROTO_xxx for IPv4 and IPv6 */协议类型

//        socklen_t ai_addrlen; /* length of ai_addr */指向缓冲区的字节数

//        char *ai_canonname;/* canonical name for hostname */主机的规范化名称

//        struct sockaddr *ai_addr;/* binary address */指向sockaddr结构的指针。getaddrinfo返回的每个addrinfo结构内的ai_addr都指向一个filled-in套接字地址结构。

//        struct addrinfo *ai_next;/* next structure in linked list */指向链表中下一个addrinfo结构的指针,如果是链表的最后一个addrinfo结构,则ai_next为NULL。

//    };

////////////////////////////////lb

转换IPV4和IPV6:

/**

int  getaddrinfo(

 

 const char* nodename,//传的是主机地址的字符串;

 

 const char* servname,

 

 const struct addrinfo* hints,

 

 struct addrinfo** res

 

 );

 

 *  nodename:节点名可以是主机名,也可以是数字地址。(IPV4的10进点分,或是IPV6的16进制)

 

 *  servname:包含十进制数的端口号或服务名如(ftp,http)

 

 *  hints:是一个空指针或指向一个addrinfo结构的指针,由调用者填写关于它所想返回的信息类型的线索。

 

 *  res:存放返回addrinfo结构链表的指针,指向由一个或多个addrinfo结构体组成的链表,包含了主机的响应信息

 * 返回值:成功返回0,失败返回非零的 sockets error code

 

 */

////////////////////////////////lb
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: