【发布时间】:2014-08-15 17:08:06
【问题描述】:
给出以下伪代码。我将如何读取给定的数据
【问题讨论】:
给出以下伪代码。我将如何读取给定的数据
【问题讨论】:
使用DataInputStream 让您的生活更轻松。
DataInputStream in = new DataInputStream(socket.getInputStream());
short myShortStreamSize = in.readShort();
byte[] payload = new byte[myShortStreamSize];
in.readFully(payload);
【讨论】:
Socket 有一个getInputStream() 方法。您将使用返回的InputStream 并从中读取myShortStreamSize 字节到byte[],将其转换为代表您的有效负载大小的int/long,然后读入另一个更大的new byte[payloadSize],即有效负载本身。
【讨论】:
你可以试试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);
【讨论】: