我正在使用Python开发客户端 - 服务器游戏,每个量程,服务器都必须将游戏状态发送给客户端。
我用UDP和TCP连接开发了它。 UDP确保游戏状态的速度发送,TCP用于可靠性部分。
这是一个好方法吗?
因此每个量子服务器都会发送如下数据:
while playing:
data = computeGameData()
sendNewPlayUDP(data)
sendNewPlayTCP(data)
time.sleep(sleeptime)
我测试了它,它似乎运行良好,但我想知道线程是否可以因为TCP挣扎而阻塞。可能有更好的方法。
答案 0 :(得分:1)
根据:
http://gafferongames.com/networking-for-game-programmers/udp-vs-tcp/
你根本不应该使用TCP。本文建议使用UDP并为您绝对想要接收和确认的数据包添加额外的逻辑。本文还指出TCP数据包可能会干扰UDP数据包,从而增加UDP数据包丢失率。
您也可以查看:
https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
在许多情况下,可以容忍丢失数据包。在TCP和UDP通道上发送相同的数据看起来有点过分。