【问题标题】:How to convert a TCP inputstream into a UPD datgram byte array?如何将 TCP 输入流转换为 UDP 数据报字节数组?
【发布时间】:2012-01-15 02:59:26
【问题描述】:

我有一些字符串要转换为我使用的流

outputStream.write(string.getBytes(Charset.forName("UTF-8")));

并通过 TCP 套接字发送,然后服务器将这些流转换为字节数组并发送到 UDP 套接字。问题是因为原始字符串大小不同,我不想定义字节数组大小。后一种方法的最佳优化方式是什么。

【问题讨论】:

  • 我会在同一个数据包中设置大小和字节数。

标签: java sockets network-programming io


【解决方案1】:

将字节数组发送到 UDP 套接字时,让第一个字节为您发送的字符串的长度。缺点是您只能发送 0 到 255 个字节。我不知道Java,但是你可以得到长度的最低8位作为第一个字节发送,高8位作为第二个字节,那么你可以发送0到65535个字节。

从 UDP 套接字读取的其他程序当然必须读取前一个或两个字节,并从中构造一个整数。然后它知道长度并可以读取确切的字节数。

【讨论】:

  • UDP 数据包是自包含的,不需要嵌入长度值。数据包大小字符串长度。但是,我会改为通过 TCP 连接发送字符串长度,以便接收方知道然后通过 UDP 发送多少字节。
猜你喜欢
  • 2023-03-28
  • 2014-11-08
  • 2019-02-14
  • 1970-01-01
  • 1970-01-01
  • 2018-04-22
  • 2012-04-12
  • 2021-05-14
  • 1970-01-01
相关资源
最近更新 更多