gpt4 book ai didi

Java UDP 数据报包 - 切片数据以适应缓冲区大小

转载 作者:行者123 更新时间:2023-11-30 03:25:42 26 4
gpt4 key购买 nike

在Java中,UDP数据报包使用固定大小的字节数组通过网络发送和接收流。

  1. 如果我要发送的数据大于缓冲区,如何对数据进行切片以适合数据报包?
  2. 如果数据在客户端被切片为合适的数据报,如何知道我应该接收的数据包数量?
  3. 如果我使用String.getBytes()在客户端将所有数据发送到一个缓冲区中,然后在服务器上如何知道我需要接收的数据包或数据的确切长度作为我应该接收的所有数据?

plus:我知道UDP数据包不应该太长(即不超过548字节),这意味着在客户端对数据进行切片会更有效。

最佳答案

这是我要做的:

  1. 选择您要发送的最大数据报大小N - 例如 548。您可以尝试更大的值,最高可达 65535。
  2. 将数据拆分为 N - 6 大小的 block 。
  3. 在每个 block 中,使用 2 个字节作为数据报编号,使用 2 个字节作为数据报长度。使用剩余的 2 个字节来发送数据报的总数。是的,这在大多数数据报中“浪费”了 2 个字节,但它使代码更简单。

当接收到每个数据报时,使用前6个字节将数据报重新组装成完整的数据。

关于Java UDP 数据报包 - 切片数据以适应缓冲区大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30291290/

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