cocos2dx 多语言支持支持ps4吗

3773人阅读
cocos-x笔记(13)
日,苹果出台新政策,要求所有提交Apple Store渠道的包必须要支持IPv6。这昂无疑让很多人心头一凉。
果然在这几天很多公司的产品都被打回来了。我们公司也不例外,提交了几个包,只有一款侥幸逃过一劫,其它全部被打回。
碰到这种问题,第一时间就去调查了下,首先肯定是去构建一个ipv6网络测试。面临着一大堆的问题,这个是客户端还是服务端的问题?如果是服务端的问题,怎么处理,服务端需要更改什么内容?如果是客户端的问题又怎么办呢?……
慌归慌,事情还是要去处理,首先去百度科普下苹果的这条新规的规则,然后再去熟悉下什么是ipv6(尴尬脸~)。这个就不赘述了,自行度娘。
测试ipv6网络,首先要搭建好一个ipv6的网络, 百度一大堆。
ipv6与ipv4的差别有:
(1) IPv4是“.”来分割的,但是IPv6是“:”来分割的。
(2)Ipv6使用域名
(3)Ipv6创建socket时使用的参数为 ( socket(AF_INET6, SOCK_STREAM, IPPROTO_TCP); ), 而Ipv4创建socket时使用的参数为 ( socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) )
对于Ipv6 socket的创建及连接 可以参考这个链接
Cocos2d-x开发系列 苹果IPv6 only问题处理 可以参考这个链接
以下是创建socket的相关代码
——————————————————————————————————————
本人的代码(包含ipv6 下 socket的创建与连接。 代码中用到了两个方法,分别为判断网络环境与域名解析函数)
m_host = domainToIP(m_host.c_str());
int sockfd,
struct sockaddr_in6
char buffer[1024];
m_hSocket = socket(AF_INET6, SOCK_STREAM, IPPROTO_TCP);
if (m_hSocket & 0) {
cocos2d::log("socket error");
bzero(&dest, sizeof(dest));
dest.sin6_family = AF_INET6;
dest.sin6_port = htons(atoi(Value(m_iport).asString().c_str()));
if (inet_pton(AF_INET6, m_host.c_str(), &dest.sin6_addr) & 0) {
cocos2d::log("pton error");
int iss = connect(m_hSocket, (struct sockaddr*) &dest, sizeof(dest));
if (iss != 0) {
cocos2d::log("connect error");
return false;
cocos2d::log("socket connect Ok");
——————————————————————————————————————
一、 添加网络判断的函数
staticbool isIPV6Net(conststd::string domainStr = "")
bool isIPV6Net = false;
struct addrinfo *result = nullptr,*
struct sockaddr_in6
bzero(&dest, sizeof(dest));
dest.sin6_family
= AF_INET6;
int ret = getaddrinfo(domainStr.c_str(),nullptr,nullptr,&result);
if (ret == 0)
for (curr = curr != nullptr; curr = curr-&ai_next)
switch (curr-&ai_family)
case AF_INET6:
isIPV6Net = true;
case AF_INET:
freeaddrinfo(result);
return isIPV6N
二、添加域名解析函数
static std::string domainToIP(const char* pDomain)
if (isIPV6Net())
memset(&hint, 0x0, sizeof(hint));
hint.ai_family = AF_INET6;
hint.ai_flags = AI_V4MAPPED;
addrinfo* answer = nullptr;
getaddrinfo(pDomain, nullptr, &hint, &answer);
if (answer != nullptr)
char hostname[1025] = "";
getnameinfo(answer-&ai_addr,answer-&ai_addrlen,hostname,1025,nullptr,0,0);
char ipv6[128] = "";
memcpy(ipv6,hostname,128);
CCLOG("domainToIP addrStr:%s", ipv6);
return ipv6;
freeaddrinfo(answer);
struct hostent* h = gethostbyname(pDomain);
if( h != NULL )
unsigned char* p = (unsigned char *)(h-&h_addr_list)[0];
if( p != NULL )
char ip[16] = {0};
sprintf(ip, "%u.%u.%u.%u", p[0], p[1], p[2], p[3]);
return "";
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:42198次
排名:千里之外
原创:44篇
(1)(3)(3)(2)(6)(1)(6)(1)(6)(7)(4)(1)(1)(4)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'Cocos2dx中文支持问题的解决办法_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Cocos2dx中文支持问题的解决办法
&&Cocos2dx中文支持问题的解决办法,本文介绍了两种方法,均亲测可用。
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩7页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢egret 和cocos2d-x-js哪个目前更稳定更好用? ? - 知乎256被浏览56161分享邀请回答10添加评论分享收藏感谢收起161 条评论分享收藏感谢收起查看更多回答1 个回答被折叠()

我要回帖

更多关于 cocos2dx 能做coc吗 的文章

 

随机推荐