InputStream 读取到字节数组 - 它会混合消息吗

InputStream read to byte array - will it mix messages

假设我有一个已连接的套接字并且正在监听,例如将字节读取到 1024 大小的缓冲区。如果有 2 条消息一个接一个地发送,此读取方法是否会读取整个第一条消息然后读取下一条消息的一部分,或者以某种方式在消息之间分开?

InputStream 不知道第一条消息在哪里结束,第二条消息从哪里开始。所以它可以读取 2 个字节,然后是 1024 个字节,然后是 32 个字节,尽管消息分别是 512 个字节和 546 个字节。

因此您需要定义一个清晰的协议,基于分隔符或固定消息长度,或基于例如消息长度 + 消息正文组成的数据包。