博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言socket编程总结(三) struct sockaddr_in /struct sockaddr_in6/struct addrinfo 结构体
阅读量:4289 次
发布时间:2019-05-27

本文共 1583 字,大约阅读时间需要 5 分钟。

//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_nextNULL

//    };

lb

转换IPV4和IPV6:

/**

int  getaddrinfo(

 

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

 

 const char* servname,

 

 const struct addrinfo* hints,

 

 struct addrinfo** res

 

 );

 

 *  nodename:节点名可以是主机名,也可以是数字地址。(IPV410进点分,或是IPV616进制)

 

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

 

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

 

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

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

 

 */

lb

转载地址:http://uglgi.baihongyu.com/

你可能感兴趣的文章
最简单的基于FFMPEG的封装格式转换器(无编解码)
查看>>
base64 编码原理
查看>>
单链表是否有环的问题
查看>>
判断两个链表是否相交并找出交点
查看>>
归并排序
查看>>
STL常见问题
查看>>
time_wait和close_wait状态
查看>>
STL中vector、list、deque和map的区别
查看>>
Linux下多线程查看工具(pstree、ps、pstack)
查看>>
PID PPID LWP NLWP
查看>>
查看线程CPU占用情况
查看>>
查看个线程的CPU 内存占用
查看>>
Fiddler 教程
查看>>
apache 设置用户注意事项
查看>>
svn中设置文件夹链接
查看>>
find ./ -name "*.cgi" |xargs -i cp "{}" ./cgi-bin/
查看>>
svn st | awk '{if ( $1 == "?") { print $2}}' | xargs svn add
查看>>
mysql事务处理用法与实例详解
查看>>
利用iptables来配置linux禁止所有端口登陆和开放指定端口
查看>>
Python模块——struct
查看>>