socket支持ipv6
转自:https://www.jianshu.com/p/9926b99a7fef
以前cocos2d-x的项目里都使用的是libwebsocket,如果想支持ipv6,只需要升级相应的库即可,现在有个项目里使用的是原生socket,如果要支持ipv6可能需要进行一些代码的改造,具体可参考如下代码:
- struct addrinfo *result;
- struct addrinfo *res;
- struct addrinfo addrCriteria;
- memset(&addrCriteria,,sizeof(addrCriteria));
- addrCriteria.ai_family=AF_UNSPEC;
- addrCriteria.ai_socktype=SOCK_STREAM;
- addrCriteria.ai_protocol=IPPROTO_TCP;
- //判定网络类型 指定特定接口信息
- int error = getaddrinfo("www.baidu.com", "", &addrCriteria, &result);
- if (error == )
- {
- struct sockaddr_in *sa;
- for (res = result; res != NULL; res = res->ai_next)
- {
- if (AF_INET6 == res->ai_addr->sa_family)
- {
- char buf[] = {};
- sa = (struct sockaddr_in*)res->ai_addr;
- inet_ntop(AF_INET6, &((reinterpret_cast<struct sockaddr_in6*>(sa))->sin6_addr), buf, );
- m_sock = socket(res->ai_family, res->ai_socktype, );
- if (m_sock == -) {
- log("error socket create");
- return;
- }
- struct sockaddr_in6 svraddr;
- memset(&svraddr, , sizeof(svraddr)); //注意初始化
- svraddr.sin6_family = AF_INET6;
- svraddr.sin6_port = htons(port);
- if (inet_pton(AF_INET6,buf,&svraddr.sin6_addr) < )
- {
- log("error addr");
- }
- int ret = connect(m_sock, (struct sockaddr*) &svraddr, sizeof(svraddr));
- //TODO....遇到IPv6就退出
- break;
- }
- else if (AF_INET == res->ai_addr->sa_family)
- {
- char buf[] = {};
- sa = (struct sockaddr_in*)res->ai_addr;
- inet_ntop(AF_INET, &sa->sin_addr), buf, );
- m_sock = socket(res->ai_family, res->ai_socktype, );
- if (m_sock == -) {
- log("error socket create");
- return;
- }
- struct sockaddr_in svraddr;
- svraddr.sin_family = AF_INET;
- svraddr.sin_addr.s_addr = inet_addr(buf);
- svraddr.sin_port = htons(port);
- int ret = connect(m_sock, (struct sockaddr*) &svraddr, sizeof(svraddr));
- //TODO.... break除掉
- //break;
- }
- }
- }
socket支持ipv6的更多相关文章
- iOS 支持 IPv6
苹果的规定:2016年6月1日提交到App Store必须支持IPv6-only网络. 官方文档:https://developer.apple.com/library/mac/documentati ...
- iOS应用支持IPV6,就那点事儿
原文连接 果然是苹果打个哈欠,iOS行业内就得起一次风暴呀.自从5月初Apple明文规定所有开发者在6月1号以后提交新版本需要支持IPV6-Only的网络,大家便开始热火朝天的研究如何支持IPV6 ...
- iOS应用支持IPV6
一.IPV6-Only支持是啥? 首先IPV6,是对IPV4地址空间的扩充.目前当我们用iOS设备连接上Wifi.4G.3G等网络时,设备被分配的地址均是IPV4地址,但是随着运营商和企业逐渐部署IP ...
- HP-Socket v5.0.1:支持 IPv6 及多 SSL 证书
HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...
- 让你的mysql或mariadb 支持ipv6
如果你在windows 或Linux系统已经安装了mysql/mariadb,并且操作系统本身已经支持了ipv6. 在/etc/my.conf 这样配置可以让mysql也支持ipv6 [mysqld] ...
- linux centos6.5支持ipv6
1.用ifconfig查看有没有inet6 addr,我的这个已经支持了,如果不支持请看第二步. 2.vim /etc/sysconfig/network 把这句改成:NETWORKING_IPV6= ...
- 用尽洪荒之力解决Apple Store ipv6审核通关---linux服务器支持ipv6
强势的库克时代到来,苹果开启了强制IPV6审核,大家也知道中国现在的情况,除了教育网实验性的支持IPV6,ISP运营商还不支持,想必大家都陆陆续续的遭受到了苹果无情的拒绝,以前开个加急,审核 ...
- iOS 上线因iPv6被拒,查询服务器是否支持iPv6,mac设置iPv6网络,手机测试iPv6
一. iOS----如何检查域名是否支持ipv6 iOS----------如何检查域名是否支持ipv6 1.检查你所用到的库,像af 3.0以上什么的(不用改),其他的库自己去搜下是否支持ipv6吧 ...
- iOS----------如何检查域名是否支持ipv6
http://ipv6-test.com/validate.php 这个地址 也可以检测到! 1.检查你所用到的库,像af 3.0以上什么的(不用改),其他的库自己去搜下是否支持ipv6吧. 2. ...
随机推荐
- 51nod 2500 后面第一个大于
小b有一个长度为n的序列t,现在她对于每个i,求最小的正数j满足i+j≤ni+j≤n且ti+j>titi+j>ti,输出j,如果不存在这样的j,则输出0. 样例解释: 对于i=1,t2&g ...
- 微信之获取微信的openid(二)详细版
第一步 :配置测试号,网页授权获取用户基本信息. 该授权回掉页面域名为ngrok 映射的域名,我的映射地址是127.0.0.1:8080. 到此微信配置完毕,接下来就是直接上代码了 2.用户同意授权 ...
- 11.vue-router编程式导航
页面导航的两种方式 声明式导航:通过点击链接实现导航的方式,叫做声明式导航 例如:普通网页中的链接或vue中的 编程式导航:通过调用JavaScrip形式的API实现导航的方式,叫做编程式导航 例如: ...
- python 批量打印PDF
有一批PDF文件,好几百个,每个只打印第2,3页,双面打印. 网上搜索一波,方案如下: 安装Ghostscript,GhostView,使用gsprint命令打印pdf文件. gsprint命令参数说 ...
- VS2012 VS2010 VTK引入设置
1.C/C++ ---> 附加包含的目录 F:/VTK61/VTK-6.1.0/SLN/Filters/Sources F:/VTK61/VTK-6.1.0/VTK-6.1.0/Filters/ ...
- 编程用泰勒公式求e的近似值,直到最后一项小于10的负6次方为止。
#include<stdio.h>#include<math.h>void main(){ int n; float j=1.0,sum=1.0; for(n=1;;n++) ...
- WinDbg常用命令系列---显示数字格式化.formats
.formats (Show Number Formats) .formats命令在当前线程和进程的上下文中计算表达式或符号,并以多种数字格式显示它. .formats expression 参数: ...
- ROM
ROM 是 read only memory的简称,表示只读存储器,是一种半导体存储器.只读存储器(ROM)是一种在正常工作时其存储的数据固定不变,其中的数据只能读出,不能写入,即使断电也能够保留数据 ...
- 通过granfana 以及prometheus 比较zulu 、oracle、openjdk 等jvm 运行
说明,此测试不完备,只是一个简单的集成,详细的需要进行jvm 参数的调整 环境准备 参考项目 https://github.com/rongfengliang/zulu-openjdk-openjdk ...
- nRF51822 配对之device_manager_init 调用,以及保证 用户数据存储 的Flash 操作不与device manager 模块冲突
昨天 遇到了一个烦心的问题,被老外客户怼了两句,恼火,很想发火,发现英文不够用,算了,就不跟直肠的鬼佬一般见识.说正事. 最近的一个nRF51822+MT2503 钱包防丢项目,准备接近量产了.昨天做 ...