如何升级cocos2d-x来支持ipv6以及socket怎么支持ipv6
儿童节后苹果只爱IPv6 Cocos2d-x第一时间支持
int tcp_connect(const char* ip,int port) { char strIP[100]; sprintf(strIP,"%s",ip); char strPort[100]; sprintf(strPort,"%d",port); struct addrinfo *ailist,*aip; struct addrinfo hint; struct sockaddr_in *sinp; int sockfd; int err; char seraddr[INET_ADDRSTRLEN]; short serport; hint.ai_family = 0; hint.ai_socktype = SOCK_STREAM; hint.ai_flags = AI_CANONNAME; hint.ai_protocol = 0; hint.ai_addrlen = 0; hint.ai_addr = NULL; hint.ai_canonname = NULL; hint.ai_next = NULL; if ((err = getaddrinfo(strIP,strPort,&hint,&ailist)) != 0) { printf("getaddrinfo error: %sn",gai_strerror(err)); return -1; } bool isConnectOk = false; printf("getaddrinfo okn"); for (aip = ailist; aip != NULL; aip = aip->ai_next) { sinp = (struct sockaddr_in *)aip->ai_addr; if (inet_ntop(sinp->sin_family,&sinp->sin_addr,seraddr,INET_ADDRSTRLEN) != NULL) { printf("server address is %sn",seraddr); } serport = ntohs(sinp->sin_port); printf("server port is %dn",serport); if ((sockfd = socket(aip->ai_family,SOCK_STREAM,0)) < 0) { printf("create socket failed: %sn",strerror(errno)); isConnectOk = false; continue; } printf("create socket okn"); if (connect(sockfd,aip->ai_addr,aip->ai_addrlen) < 0) { printf("can't connect to %s: %sn",strIP,strerror(errno)); isConnectOk = false; continue; } isConnectOk = true; break; } freeaddrinfo(ailist); if (isConnectOk) { return sockfd; } return -1; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |