我有一个关于从服务器套接字读取字节的问题。我在网络上使用读写 8192b 字节的默认值。问题是有时您需要发送大于缓冲区容量的文件。为了避免增加缓冲区,因为您可以知道那些在不同时间到达的数据包是相关的?
客户端片段:
{
String c = xxxxx //imagine that it an string format JSON with 64000bites length
OutputStream wsOS = socket.getOutputStream();
wsOS.write(new String(data,"UTF-8"));
wsOS.flush();
}
当服务器端收到 JSON 字符串时:
{
byte[] buffer = new byte[8192];
int size = 0;
StringBuilder str = new StringBuilder();
size = wsIS.read(buffer);
if (size > 0) {
str.append(new String(buffer, "UTF-8")
.substring(0, size));
while (wsIS.available() > 0) {
size = wsIS.read(buffer);
str.append(new String(buffer, "UTF-8")
.substring(0, size));
}
}
}
问题:
所有字符串都到达服务器但在块 8192b - 我无法连接字符串,因为我不知道最后一个字符串 JSON 是否是预览的一部分。