我正在使用Java编写一个游戏服务器,需要发送一个网络顺序短信。我了解了网络顺序,但是在发送数据之前发送的短信没有找到任何细节。有人能解释一下这是什么,并且如何使用Java将其发送给客户端吗?
我正在使用Java编写一个游戏服务器,需要发送一个网络顺序短信。我了解了网络顺序,但是在发送数据之前发送的短信没有找到任何细节。有人能解释一下这是什么,并且如何使用Java将其发送给客户端吗?
Java NIO字节缓冲区支持更改字节顺序。网络字节顺序为大端字节序。
// 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);
字节序是指存储大于一个字节的数值时,字节的顺序。有两种类型:大端序(最高有效字节在前)和小端序(最低有效字节在前)。
OutputStream o
和一个short i
,那么o.write((i >> 8) & 0xff);
o.write(i & 0xff);
以网络字节顺序发送短整型。我建议使用一个DataOutputStream
,它有一个writeShort()
方法(还有writeInt
、writeLong
等),可以自动按照网络字节顺序写入。
你可以使用DataOutputStream来包装你的OutputStream。
然后你可以使用DataOutputStream.writeShort。按照约定,该方法以网络顺序写入数据。