Java 基于优先级的 udp 协议
Java priority based udp protocol
我尝试开发简单的 mmorpg.Since 有 2 个要发送的数据优先级,一个是必须从服务器发送的基于 TCP 的信息,另一个是基于 UDP 的角色移动是否有设置 UDP 协议以根据包优先级也可以作为 TCP 工作的方法?因此不需要打开从服务器到客户端的 2 个连接。
您似乎在问是否可以用仅使用 UDP 实现的内容替换 TCP 字节流和 UDP "stream" 消息。
答案是:"Yes in theory, but in practice it would be a lot of work, would perform poorly, and would achieve very little".
TCP 是一种可靠的字节流协议,通过跟踪已发送的内容和已确认的内容,在不可靠的 IP 数据包层之上实现。如果特定数据包丢失/被网络丢弃,发送方或接收方会发出通知,丢失的数据将被重新传输。 TCP 还实现了流量控制,因此协议不会使网络过载。
相比之下,UDP 既不提供可靠性也不提供流量控制。
有可能在任何不可靠的数据包层上实现类似 TCP 的可靠性和流量控制......包括 UDP/IP。但是,要在 Java 中执行此操作,您需要在客户端和服务器端的 "user-space" 应用程序库中实现类似 TCP 的协议。这是很多工作,性能将不可避免地不如 OS 内核中的真正 TCP/IP 实现。
此外,当您消除 TCP/IP 套接字时,您正在用 Java 应用程序本身中的等效数据结构和缓冲替换它们。实际上,这不太可能在服务器端或客户端节省资源。
我尝试开发简单的 mmorpg.Since 有 2 个要发送的数据优先级,一个是必须从服务器发送的基于 TCP 的信息,另一个是基于 UDP 的角色移动是否有设置 UDP 协议以根据包优先级也可以作为 TCP 工作的方法?因此不需要打开从服务器到客户端的 2 个连接。
您似乎在问是否可以用仅使用 UDP 实现的内容替换 TCP 字节流和 UDP "stream" 消息。
答案是:"Yes in theory, but in practice it would be a lot of work, would perform poorly, and would achieve very little".
TCP 是一种可靠的字节流协议,通过跟踪已发送的内容和已确认的内容,在不可靠的 IP 数据包层之上实现。如果特定数据包丢失/被网络丢弃,发送方或接收方会发出通知,丢失的数据将被重新传输。 TCP 还实现了流量控制,因此协议不会使网络过载。
相比之下,UDP 既不提供可靠性也不提供流量控制。
有可能在任何不可靠的数据包层上实现类似 TCP 的可靠性和流量控制......包括 UDP/IP。但是,要在 Java 中执行此操作,您需要在客户端和服务器端的 "user-space" 应用程序库中实现类似 TCP 的协议。这是很多工作,性能将不可避免地不如 OS 内核中的真正 TCP/IP 实现。
此外,当您消除 TCP/IP 套接字时,您正在用 Java 应用程序本身中的等效数据结构和缓冲替换它们。实际上,这不太可能在服务器端或客户端节省资源。