2010-01-02 24 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。按合同,該方法按網絡順序寫入數據。