2013-02-08 17 views

回答

3

使用DataInputStream使您的生活變得輕鬆。

DataInputStream in = new DataInputStream(socket.getInputStream()); 
short myShortStreamSize = in.readShort(); 
byte[] payload = new byte[myShortStreamSize]; 
in.readFully(payload); 
+0

@ Mrshll187爲什麼布賴恩關心你downvote?除了你和downvoter之外,爲什麼還要有人? – EJP 2013-02-08 20:27:14

+0

@EJP這是我的假設,他是下來的選民。同樣,你爲什麼關心我的迴應? – stackoverflow 2013-02-08 21:28:53

+0

@ Mrshll187因爲它是,而且是如此的離奇。爲什麼提供答案的人會成爲成千上萬成員中的第一個犯罪嫌疑人?如果他是,他爲什麼應要求將其撤銷? – EJP 2013-02-08 23:08:15

1

Socket閱盡有getInputStream()方法。您將使用返回的InputStream並將myShortStreamSize的字節讀取到byte[]中,將其轉換爲代表您的有效負載大小的int/long,然後讀入另一個更大的有效負載本身。

0

您可以嘗試JBBP

@Bin class Struct { byte [] payload; } 
@Bin class ParsedStream { Struct [] structs; } 
ParsedStream parsed = JBBPParser.prepare("structs[_] { ushort size; byte [size] payload; }").parse(theInStream).mapTo(ParsedStream.class);