在TCP-connection 中,服务器可以跟踪客户端何时连接和断开连接。这是如何实现的UDP,没有直接连接到服务器(每次发送数据包之前都会连接)?
例如,有一个游戏,在连接时,给用户一个特定的槽(游戏中的一个位置),如果客户端失去连接,服务器必须释放它的槽。
在TCP-connection 中,服务器可以跟踪客户端何时连接和断开连接。这是如何实现的UDP,没有直接连接到服务器(每次发送数据包之前都会连接)?
例如,有一个游戏,在连接时,给用户一个特定的槽(游戏中的一个位置),如果客户端失去连接,服务器必须释放它的槽。
在操作系统(和协议)级别,UDP 中根本没有“连接”(没有这样的东西)。每个数据包都独立于其他数据包发送到(并从网络接收)。
因此,整个“连接”的模拟都留给了应用程序,应用程序必须按照自己的逻辑来做。
这是通过所谓的“心跳”(heartbeat)来实现的,即服务器必须定期接收来自客户端的数据包。如果在经过的超时时间内没有数据包,则服务器认为客户端已断开连接。这个过程有点类似于 ping。如前所述,它是在应用程序级别实现的。