java socket 读取字节流, 数据格式:长度+内容
时间: 2023-08-04 12:38:16 浏览: 184
如果要使用Java Socket读取字节流,数据格式为"长度+内容",可以按照以下步骤进行读取:
1. 首先读取固定长度的字节数据,用于获取内容的长度。可以使用`InputStream`的`read(byte b[], int off, int len)`方法读取指定长度的数据。假设长度信息占用4个字节,可以使用以下代码读取长度信息:
```java
byte[] lengthData = new byte[4];
int read = inputStream.read(lengthData, 0, 4); // 读取4个字节长度信息
int length = ByteBuffer.wrap(lengthData).getInt(); // 将读取到的字节转换为整数
```
2. 然后,根据读取到的长度信息,读取对应长度的内容。同样地,可以使用`InputStream`的`read(byte[] b, int off, int len)`方法读取指定长度的数据。假设内容的长度为`length`,可以使用以下代码读取内容:
```java
byte[] contentData = new byte[length];
int read = inputStream.read(contentData, 0, length); // 读取指定长度的内容
String content = new String(contentData, StandardCharsets.UTF_8); // 将读取到的字节转换为字符串
```
这样,就完成了对"长度+内容"格式的数据的读取。需要注意,上述代码中使用了`String`的构造方法将字节数据转换为字符串,因此需要确保内容是字符串类型并且编码方式正确。如果内容不是字符串类型或编码方式不正确,可以使用其他方式进行转换。
阅读全文