2010-01-02 29 views
3

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

回答

6

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(最低有效字节在前)。

1

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

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

发送网络字节顺序短。我推荐使用DataOutputStream,它有一个方法writeShort()(和writeInt,writeLong等),它会自动按网络字节顺序写入。

0

你可以用DataOutputStream封装你的OutputStream。可以使用DataOutputStream.writeShort。按合同,该方法按网络顺序写入数据。