java - 从 java socket(TCP) 读取 19000 字节

标签 java sockets tcp

这是我的简化代码

sock.getOutputStream().write(buff); //send a readRequest
byte[] rbuff = new byte[19210]; //Answer has 19210 bytes of data
sock.getInputStream().read(rbuff);

在 wireshark 中,我看到它被分成几个 tcp 包。 但是读取不应该等到 19210 字节到达了吗?

我得到了数据,但是从某个位置开始,所有字节都是 0。这基本上是相同的位置,但有点不同。

知道我在这里做错了什么吗?

最佳答案

你可以尝试像这样分 block 阅读:

ByteArrayOutputStream b= new ByteArrayOutputStream();

byte[] buf = new byte[1024];
while (count = in.read(buf)) > 0)
{
  b.write(buf,0,n);
}

byte data[] = b.toByteArray();

关于java - 从 java socket(TCP) 读取 19000 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29797089/

相关文章:

c++ - winsock 错误 10049 尝试绑定(bind)

java - android 测试中的 System.out.println

java - Jackson:从 JSON 数组中获取没有 id 的单个值

javascript - 即使客户端没有提供回调,有没有办法从服务器发送响应?

c++ - 阻塞套接字 - 检测状态

tcp - 我应该使用 TCP 还是 UDP 数据包来控制无人机?

java - 具有良好插入、移除和随机访问能力的数据结构

java - 通过XSLT和Java产生不同的当前时间

c - 如何将 SOCK_DGRAM 转换为 SOCK_RAW?

networking - 如果 UDP 不可靠,为什么在传输层使用它