Java TCP如何读取发送的流大小(标题)并根据该大小继续读取

时间:2013-02-08 16:22:10

标签: java tcp

给出以下伪代码。我将如何读取给定的数据

enter image description here

3 个答案:

答案 0 :(得分:3)

使用DataInputStream让您的生活轻松。

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

答案 1 :(得分:1)

SocketgetInputStream()方法。您将使用返回的InputStream并从中读取myShortStreamSize个字节到byte[],将其转换为表示有效负载大小的int / long,然后读入另一个更大的new byte[payloadSize]。 1}},有效载荷本身。

答案 2 :(得分: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);