我制作了一个在线游戏,它使用 UDP 协议在客户端和服务器之间进行通信。但是,由于 UDP 是无连接的,我无法检测到客户端是否关闭了游戏或网络中发生了错误。因此,我需要使 UDP 成为一个面向连接的协议,或者至少检测网络错误。我怎么能做到这一点?TCP是如何面向连接的?
问问题
616 次
2 回答
2
正如您所说,UDP 没有连接的概念。因此,实现您想要的唯一方法是在 UDP 之上自己实现所需的逻辑。
例如,您可以让您的客户端使用包含唯一 ID 的 UDP 数据包定期与服务器“签入”。如果服务器在一段时间内没有从客户端收到此消息,它会认为该客户端已死。
于 2016-09-04T20:11:43.913 回答
1
首先,我知道您需要 UDP 因为效率 - 但也许您可以尝试尝试 TCP?
否则我会像@Phil Taprogge 提到的那样做。每隔 n 秒发送一个由服务器识别的特定 UDP 包。如果服务器在 3*n 秒内没有收到它,则很可能客户端已断开连接。
于 2016-09-04T20:14:32.147 回答