We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
在使用 KCP时,你可以用在你 TCP的基础上,再登陆时服务端返回 UDP端口和密钥,客户端通过 TCP收到以后,向服务端的 UDP端口每隔一秒重复发送包含握手信息,直到服务端返回成功或者失败。服务端通过 UDP传上来的密钥得知该客户端 sockaddr对应的 TCP连接,这样就建立 TCP连接到 UDP连接的映射关系。为了保持连接和 NAT出口映射,客户端一般需要每 60秒就发送一个 UDP心跳,服务端收到后回复客户端,再在这个 UDP连接的基础上增加调用 KCP的逻辑,实现快速可靠传输,这样一套 TCP/UDP两用的传输系统就建立了。
注意:为了保持 NAT映射关系,UDP需要每隔 60秒就像服务器 ping一次。同时为了防止出口地址改变(NAT映射改变,或者移动设备切换基站),可以使用重连,或者UDP重绑定(但是在 3G,2G,EDGE下面,出口改变,TCP也就断了,所以简单重连也没问题)。
中国的网络情况比较特殊,会存在有些网络 UDP连接不上的情况,因此都是先连接 TCP,然后试图 UDP,UDP不通的情况下,退回 TCP也能正常游戏,一旦 TCP断开,则认为 UDP也断开了。