转自:https://www.jianshu.com/p/9926b99a7fef
以前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<struct sockaddr_in6*>(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; } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述