Quick 支持 ipv6解决方案(cocos-lua同理)

原链接:http://forum.cocos.com/t/quick-ipv6-cocos-lua/37105

  1. 如果用到了curl(也就是network.createHTTPRequest),按照官方教程升级curl就行了

  2. 如果用到了websocket 也按照官方出的教程升级下websocket就行了。

  3. 如果用到了luasocket。先看看版本吧,具体哪个版本以上忘记了。可以检测luasocket代码是否有tcp6()这个函数。
    如果有说明是支持的。然后在SocketTCP的connect里面加上判断代码:

    local isipv6_only = false
    local addrinfo, err = socket.dns.getaddrinfo(self.host)
    for i,v in ipairs(addrinfo) do
        if v.family == "inet6" then
            isipv6_only = true;
            break
        end
    end
    print("isipv6_only", isipv6_only)
    -- dump(addrinfo)
    if isipv6_only then
        self.tcp = socket.tcp6()
    else
        self.tcp = socket.tcp() 
    end
    

OK了 很简单。升级过程中可能会出一些错误。一般都是文件没拷贝全之类的,逐一解决就行了。
最后切记只能使用 域名。不能使用ipv4的或者ipv6的地址。而且服务器完全无需改动。

PS.
升级最好直接下载cocos3.11。然后找到相关模块完整拷贝。比如websocket,external/websockets
完整拷贝之后。还需要替换新的头文件。位置在cocos/network/WebSocket.cpp cocos/network/WebSocket.h
如果之前版本太低,可能会报错EVENT_RESET找不到。照着最新版的加上去就行了。

测试没有发现问题。我自己的项目今早通过审核了。用到了curl跟luasocket。

你可能感兴趣的:(Quick 支持 ipv6解决方案(cocos-lua同理))