使 UDP 成为面向连接的协议?
Making UDP a connection-oriented protocol?
我做了一个在线游戏,使用UDP协议在客户端和服务器之间进行通信。但是,由于 UDP 是无连接的,所以我无法检测到客户端是否关闭了游戏或网络发生错误。因此,我需要使 UDP 成为面向连接的协议,或者至少检测网络错误。我怎么能做到这一点? TCP连接是如何定向的?
如你所说,UDP没有连接的概念。
所以实现你想要的唯一方法是在 UDP 之上自己实现所需的逻辑。
例如,您可以让您的客户端 'check in' 定期使用包含唯一 ID 的 UDP 数据包访问服务器。
如果服务器在一段时间内没有收到来自客户端的消息,它将认为该客户端已死。
首先,我知道您需要 UDP 是为了提高效率 - 但也许您可以试试 TCP?
否则我会像@Phil Taprogge 提到的那样做。每隔 n 秒发送一个由服务器识别的特定 UDP 包。如果服务器在 3*n 秒内没有收到它,很可能是客户端已断开连接。
我做了一个在线游戏,使用UDP协议在客户端和服务器之间进行通信。但是,由于 UDP 是无连接的,所以我无法检测到客户端是否关闭了游戏或网络发生错误。因此,我需要使 UDP 成为面向连接的协议,或者至少检测网络错误。我怎么能做到这一点? TCP连接是如何定向的?
如你所说,UDP没有连接的概念。 所以实现你想要的唯一方法是在 UDP 之上自己实现所需的逻辑。
例如,您可以让您的客户端 'check in' 定期使用包含唯一 ID 的 UDP 数据包访问服务器。 如果服务器在一段时间内没有收到来自客户端的消息,它将认为该客户端已死。
首先,我知道您需要 UDP 是为了提高效率 - 但也许您可以试试 TCP?
否则我会像@Phil Taprogge 提到的那样做。每隔 n 秒发送一个由服务器识别的特定 UDP 包。如果服务器在 3*n 秒内没有收到它,很可能是客户端已断开连接。