基于Java优先级的udp协议

时间:2015-01-21 11:07:17

标签: java networking tcp udp

我尝试开发简单的mmorpg。因为要发送的数据有两个优先级,一个是必须从服务器发送的基于TCP的信息,另一个是基于UDP的字符移动是否有办法设置UDP协议能够作为TCP工作,取决于包的优先级?所以没有必要打开从服务器到客户端的2个连接。

1 个答案:

答案 0 :(得分:0)

您好像在问是否可以用仅使用UDP实现的消息来替换消息的TCP字节流和UDP“流”。

答案是:“理论上是的,但在实践中,这将是很多工作,表现不佳,并且会很少实现”。

TCP是一种可靠的字节流协议,它通过跟踪已发送的内容和已确认的内容,在不可靠的IP数据包层之上实现。如果网络丢失/丢弃特定数据包,则重新发送发送方或接收方通知以及丢失的数据。 TCP还实现了流量控制,以便协议不会使网络过载。

相比之下,UDP不提供可靠性或流量控制。

可以在任何不可靠的数据包层上实现类似TCP的可靠性和流量控制......包括UDP / IP。但是,要在Java中执行此操作,您需要在客户端和服务器端的“用户空间”应用程序库中实现类似TCP的协议。这是很多工作,性能不可避免地要低于OS内核中真正的TCP / IP实现。

此外,在消除TCP / IP套接字时,您将使用等效的数据结构替换它们并在Java应用程序本身中进行缓冲。实际上,这不太可能在服务器或客户端节省资源。