如何等待服务器流的多组数据
时间: 2024-02-18 15:04:38 浏览: 154
如果需要等待服务器流的多组数据,可以在循环中使用一个缓存区(buffer)来存储接收到的数据,并根据数据的特定格式进行分割和处理。例如,如果每组数据以换行符(\n)作为结尾,则可以使用BufferedReader来读取输入流,并使用readLine()方法读取每行数据。以下是一个示例代码:
```java
try {
InputStream inputStream = socket.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
StringBuilder builder = new StringBuilder();
// 循环等待服务器流的输入
while ((line = reader.readLine()) != null) {
if (line.isEmpty()) {
// 处理一组数据
String data = builder.toString();
System.out.println("Received: " + data);
// 清空缓存区
builder.setLength(0);
} else {
// 添加数据到缓存区
builder.append(line).append("\n");
}
}
} catch (IOException e) {
e.printStackTrace();
}
```
在以上代码中,我们使用BufferedReader的readLine()方法读取输入流中的每一行数据,并根据空行(即空字符串)来判断一组数据是否结束。如果一组数据结束,则将缓存区内的数据转换成字符串进行处理,并清空缓存区。如果一组数据还未结束,则将数据添加到缓存区中。注意,这里的buffer大小也要足够大,以免数据被截断。
阅读全文