网络字节序(Java)

3

我正在使用Java编写一个游戏服务器,需要发送一个网络顺序短信。我了解了网络顺序,但是在发送数据之前发送的短信没有找到任何细节。有人能解释一下这是什么,并且如何使用Java将其发送给客户端吗?

3个回答

8

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);

字节序是指存储大于一个字节的数值时,字节的顺序。有两种类型:大端序(最高有效字节在前)和小端序(最低有效字节在前)。


2
在Java中,short int是一个2字节的量。网络字节顺序先发送高位字节,然后是次高位字节,以此类推,最后发送低位字节。如果您有一个OutputStream o和一个short i,那么
o.write((i >> 8) & 0xff);
o.write(i & 0xff);

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


0

你可以使用DataOutputStream来包装你的OutputStream。

然后你可以使用DataOutputStream.writeShort。按照约定,该方法以网络顺序写入数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接