网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

c++ip6编程

1,使用 getaddrinfo 来 bind 或 connect

成都创新互联2013年开创至今,是专业互联网技术服务公司,拥有项目网站建设、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元郓城做网站,已为上家服务,为郓城各地企业和个人服务,联系电话:18980820575

bind 和 connect 有了一种新方式,通过 getaddrinfo 返回适合 bind 和 connect 的地址,然后,通过遍历列表,直到 bind 或 connect 成功,结束遍历(参见 getaddrinfo说明中的例子)。

getaddrinfo 可以返回 ip4 和 ip6 地址。

即不再通过构造 sockaddr_in(6) 而是通过构造一个 addrinfo 来 bind 或 connect 了,也不用关心 ip 类型及结构体成员,不再做字节序转换了。

    struct addrinfo hints;
    struct addrinfo *result = NULL, *rp = NULL;
    memset(&hints, 0, sizeof(struct addrinfo));
    hints.ai_family          = AF_UNSPEC;     /* Allow IPv4 or IPv6 */
    hints.ai_socktype     = SOCK_STREAM;  /* Datagram socket */
    hints.ai_flags            = AI_ADDRCONFIG;
    //hints.ai_protocol     = 0;          /* Any protocol */
    hints.ai_protocol       = IPPROTO_TCP; 
    hints.ai_canonname = NULL;
    hints.ai_addr             = NULL;
    hints.ai_next             = NULL;
hints.ai_flags 取值第一个参数的取值返回列表的包含值
包含AI_PASSIVE NULL INADDR_ANY和IN6ADDR_ANY_INIT,即 0.0.0.0 和 ::
包含AI_PASSIVE 192.168.1.1 192.168.1.1
不包含AI_PASSIVE 192.168.1.1 192.168.1.1
不包含AI_PASSIVE 127.0.0.1 127.0.0.1
不包含AI_PASSIVE 0.0.0.0 0.0.0.0

当第一个参数不为NULL时,忽略AI_PASSIVE
当不包含AI_PASSIVE时,返回的是一个适合 connect,sendto,sendmsg的地址

2,通过 addrinfo 获取 host 及 port

char host[NI_MAXHOST] = {0};
char port[NI_MAXSERV] = {0};
getnameinfo(hints.ai_addr,NI_MAXHOST,host,NI_MAXHOST,port,NI_MAXSERV,NI_NUMERICHOST|NI_NUMERICSERV);

3,ip4 和 ip6 的公共储存结构体 sockaddr_storage
获取 ip 地址信息时,可以先定义个 这种类型的变量储存,支持 ip4 和 ip6,再通过 getnameinfo 来获取 host 和 port


网页标题:c++ip6编程
网站地址:http://bjjierui.cn/article/geoeph.html

其他资讯