gpt4 book ai didi

java - DatagramPacket - Java 是否首先对其进行分段和重新排列?

转载 作者:行者123 更新时间:2023-11-29 04:49:23 26 4
gpt4 key购买 nike

我是整个 UDP 的新手(因为每个人都喜欢 TCP),需要问几个关于 Java 实现的问题。

我需要有人告诉我是否:

  1. Java发送的DatagramPackets由于以下原因自动分片网络配置和数据大小。
  2. DatagramPackets 在由于网络配置和数据大小而自动分片后由 Java 重新排列为正确的分片顺序...在 receive() 调用返回结果之前。
  3. 如果不完整的碎片化 DatagramPackets 被丢弃或在丢弃时产生异常。 (一些碎片收到了,其他碎片丢失了)

我担心 Java 会悄无声息地丢弃它,或者数据没有正确排列...这意味着我必须实现一种伪 TCP 类的东西,才能既有 UDP 的好处,又能检查TCP。

最佳答案

UDP 主要在操作系统中实现,Java 在这方面几乎没有发言权。

  • 长度超过576字节的数据包可以被分片;
  • 数据包可能会丢失;
  • 数据包可能会乱序到达。

Java 没有办法,或者你来判断这些是否已经发生。

您可以做的是实现一个协议(protocol)来检测这一点。例如在每个数据包的开头添加序列号、长度和校验和。

which would mean that I have to implement a pseudo TCP kind of thing to have both the benefits of UDP, as well as the checking of TCP.

现在您开始理解为什么“每个人都喜欢 TCP”或大多数人都喜欢。 UDP 有其用途,但对于大多数应用程序,TCP 是最简单的。

关于java - DatagramPacket - Java 是否首先对其进行分段和重新排列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35993573/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com