在 Java 中使用字节缓冲区创建数据包字节数组

Posted

技术标签:

【中文标题】在 Java 中使用字节缓冲区创建数据包字节数组【英文标题】:Creating a packet bytearray using a bytebuffer in Java 【发布时间】:2015-09-26 22:05:10 【问题描述】:

如何在 Java 中创建一个字节 [] 形式的数据包?我知道它应该用ByteBuffer 完成,然后我需要将它变成一个字节[] 并通过DataOutputStream. 发送它

【问题讨论】:

为什么不使用ByteBuffer 本身并使用频道而不是DataOutputStream?为什么是DataOutputStream?也许你应该多解释一下你的任务和它的限制。 @RealSkeptic 如果还有其他方法,请告诉我。我正在尝试向游戏服务器发送和接收数据包 那么你应该扩展你的问题并准确解释游戏服务器期望什么样的数据包以及使用什么协议。您还应该做一些研究,看看其他人是否已经为该游戏服务器编写了代码,或者有类似要求的东西,您应该阅读有关套接字、通道和缓冲区的信息。 【参考方案1】:

如何在 Java 中创建一个字节 [] 形式的数据包?我知道它应该用ByteBuffer 完成,然后我需要将它变成一个字节[] 并通过DataOutputStream. 发送它

不,你不知道。你要么:

使用ByteBuffer 并直接通过Channel 发送,无需中间byte[] 使用包裹在文件或套接字输出流周围的DataOutputStream,同样没有中间byte[] 使用包裹ByteArrayOutputStreamDataOutputStream,从中获取byte[] 数组,然后发送byte[] 数组。除非您尝试构建的是 DatagramPacket,否则此技术是不必要的。

【讨论】:

以上是关于在 Java 中使用字节缓冲区创建数据包字节数组的主要内容,如果未能解决你的问题,请参考以下文章

Java中的字节流和字符流区别

Java中的字节流和字符流区别

Java NIO之缓冲区

TCP沾包问题

Java学习笔记6.1.3 字节流 - 字节流缓冲区与缓冲字节流

Java学习笔记6.1.3 字节流 - 字节流缓冲区与缓冲字节流