网络订单简称(Java)

我需要为我正在使用Java编写的游戏服务器发送网络订单简称。 我读到了有关网络订单的信息,但是我找不到有关在数据之前发送的短信的任何详细信息。 有人可以向我解释它是什么,以及如何使用Java向客户端发送一个?

Java NIO字节缓冲区支持更改字节顺序。 因此,网络字节顺序是Big Endian。

// Allocate a big endian byte buffer ByteBuffer bb = ByteBuffer.allocate(4096); bb.order(ByteOrder.BIG_ENDIAN); bb.putShort(12345); // Write the buffer to an NIO channel bb.flip(); channel.write(bb); 

字节顺序是存储大于单个字节的数值的字节的顺序。 有两种风格Big Endian(最重要的字节优先)和Little Endian(最低有效字节优先)。

在java中,short int是2字节的数量。 网络字节顺序首先发送高位字节,然后发送下一个最高位字节,依此类推,最后发送低位字节。 如果你有一个OutputStream o和一个short i ,那么

 o.write((i >> 8) & 0xff); o.write(i & 0xff); 

发送短网络字节顺序。 我建议使用DataOutputStream ,它有一个方法writeShort() (和writeIntwriteLong等),它自动以网络字节顺序写入。

您可以使用DataOutputStream包装OutputStream。

然后,您可以使用DataOutputStream.writeShort 。 通过契约,该方法按网络顺序写入数据。