以前cocos2d-x的项目里都使用的是libwebsocket,如果想支持ipv6,只需要升级相应的库即可,现在有个项目里使用的是原生socket,如果要支持ipv6可能需要进行一些代码的改造,具体可参考如下代码:

struct addrinfo *result;

struct addrinfo *res;

struct addrinfo addrCriteria;

memset(&addrCriteria,0,sizeof(addrCriteria));

addrCriteria.ai_family=AF_UNSPEC;

addrCriteria.ai_socktype=SOCK_STREAM;

addrCriteria.ai_protocol=IPPROTO_TCP;

//判定网络类型 指定特定接口信息

int error = getaddrinfo("www.baidu.com", "1100", &addrCriteria, &result);

if (error == 0)

{

struct sockaddr_in *sa;

for (res = result; res != NULL; res = res->ai_next)

{

if (AF_INET6 == res->ai_addr->sa_family)

{

char buf[128] = {};

sa = (struct sockaddr_in*)res->ai_addr;

inet_ntop(AF_INET6, &((reinterpret_cast(sa))->sin6_addr), buf, 128);

m_sock = socket(res->ai_family, res->ai_socktype, 0);

if (m_sock == -1) {

log("error socket create");

return;

}

struct sockaddr_in6 svraddr;

memset(&svraddr, 0, sizeof(svraddr)); //注意初始化

svraddr.sin6_family = AF_INET6;

svraddr.sin6_port = htons(port);

if (inet_pton(AF_INET6,buf,&svraddr.sin6_addr) < 0)

{

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[32] = {};

sa = (struct sockaddr_in*)res->ai_addr;

inet_ntop(AF_INET, &sa->sin_addr), buf, 32);

m_sock = socket(res->ai_family, res->ai_socktype, 0);

if (m_sock == -1) {

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;

}

}

}

php websocket ipv6,原生socket支持ipv6相关推荐

  1. ipv6服务器搭建网站,IPV6地址访问web项目网站配置

    本示例在win10环境下 1,打开命令窗口,输入ipconfig命令 如红色箭头所示为ipv6的地址,但是发现地址中含有%百分号,查了相关文档,这个标识符通常指网络接口,并且通过一个百分号(%)被附加 ...

  2. 语言解析ssl包_HPSocket v5.0.1:支持 IPv6 及多 SSL 证书

    HP-Socket v5.0.1:支持 IPv6 及多 SSL 证书 HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适 ...

  3. iOS应用如何支持IPV6

    本文转自 http://www.code4app.com/forum.php?mod=viewthread&tid=8427&highlight=ipv6 果然是苹果打个哈欠,iOS行 ...

  4. iOS应用支持IPV6及阿里云相关配置

    http://www.jianshu.com/p/a6bab07c4062 果然是苹果打个哈欠,iOS行业内就得起一次风暴呀.自从5月初Apple明文规定所有开发者在6月1号以后提交新版本需要支持IP ...

  5. java ipv6校验_Java对IPv6的支持详解:支持情况、相关API、演示代码等

    本文由朱益盛.杨晖.傅啸分享,来自IBM Developer社区,原题"使用 Java 开发兼容 IPv6 的网络应用程序",本次收录时有改动. 1.引言 前几天,有个群友跟我讨论 ...

  6. 支持IPv6 DNS64 / NAT64网络

    文档详情可查看网页: https://developer.apple.com/library/ios/documentation/NetworkingInternetWeb/Conceptual/Ne ...

  7. IPv6之初使用,及IPv4与IPv6的socket通信

    1.IPv6概念 IPv6是InternetProtocol Version 6的缩写.IPv6是IETF(互联网工程任务组,InternetEngineering Task Force)设计的用于替 ...

  8. 阿里云镜像站支持ipv6啦

    ipv6的重要性 IPv6作为下一代网络的基础技术协议,于2012年6月正式商用,成为人们拥抱新技术的曙光.到2020年底我国IPv6终端设备将达到5亿,到2025年,我国在网络规模.用户规模和流量规 ...

  9. iOS版应用支持IPV6,就那点事儿

    果然是苹果打个哈欠,iOS的行业内就得起一次风暴呀.自从5月初苹果明文规定所有开发者在6月1号以后提交新版本需要支持仅IPv6的网络,大家便开始热火朝天的研究如何支持IPV6,以及应用中哪些模块目前不 ...

最新文章

  1. python3 tcp 通信源码
  2. 通过MATLAB将数据转化为mif文件,供Quartusii软件的ROM核读取调用
  3. weblogic数据源配置的问题,weblogic密码破解
  4. spring 线程池_Spring线程池服务
  5. [译] 如何在东南亚拓展您的应用业务
  6. OpenGL基础33:帧缓冲(上)之离屏渲染
  7. 桶排序,冒泡排序,快速排序三者比较(例子说名)
  8. 开源日志系统log4cplus(五)
  9. 自动驾驶 7-1 Carla 概述 - 自动驾驶汽车模拟Carla Overview - Self-Driving Car Simulation
  10. 【工具篇】ip2domain - 批量ip反查域名及备案信息工具
  11. GitLab中用户的五种权限 Guest、Reporter、Developer、Master、Owner
  12. 扡扫机器人_石头扫地机器人评测:扫拖一体 指哪扫哪
  13. LiveGBS-摄像机网页低延时无插件直播实现
  14. Mstar Mac Phy 驱动学习
  15. 数据挖掘综合应用:数据预处理代码实战
  16. 试用微软 必应输入法 功能简洁
  17. svn checkout 出现异常,E210007:Cannot negotiate authentication mechanism
  18. 苹果x漫画脸_延续硬派定位 新一代五十铃mu-X首发
  19. 给明年依然年轻的我们
  20. 解决AndroidStudio-3.0输入法卡顿不显示选词

热门文章

  1. 搭建基于LAMP的web应用程序平台
  2. 栈和堆(Stack Heap)
  3. leetcode—sqrt
  4. android之ScrollView里嵌套ListView(转)
  5. 商业 - 业务领先模型介绍(BLM)
  6. Eclipse的两个hibernate plugin
  7. 面试题57 - II. 和为s的连续正数序列
  8. 加入域时出现以下错误 登陆失败 该目标账户名称不正确_Windows 10 20H1新加入的这些功能,你应该用得上...
  9. 在php里bd2什么意思,PSR-2 PHP三元语法中是否需要括号?
  10. java中地图查询比较慢,在java中缓慢的地图