读取Socket流数据并读取前2个字节,查找剩余的消息长度

时间:2013-04-15 18:38:55

标签: java sockets inputstream bytearrayinputstream

如何从输入流中读取前2个字节并将2个字节的数据转换为实际的int长度值,然后将其余的消息读取并复制到字节数组中。 在从流中读取前2个字节后应该定义其余的数据数组,是否有人知道有效的逻辑?

2 个答案:

答案 0 :(得分:3)

使用DataInputStream.使用readUnsignedShort()方法返回长度字,然后使用readFully()方法读取以下数据。

答案 1 :(得分:1)

这将从字节数组创建一个字符串。根据需要进行调整。

InputStream in;
try {
    in = socket.getInputStream();
    DataInputStream dis = new DataInputStream(in);

    int len = dis.readInt();
    byte[] data = new byte[len];
    if (len > 0) {
       dis.readFully(data);
    }           
    String sReturn = new String(data); 
}