如果我的缓冲区大小为2048,并发送消息如“hi”,然后发送另一个“hi”,客户端如何知道第一条消息的结束位置和下一条消息的开始位置?我读到有些人建议发送数据长度,但似乎不需要,因为客户端不知何故知道消息在哪里结束。
编写代码:
byte[] sendBytes = Encoding.UTF8.GetBytes("hi");
client.GetStream().Write(sendBytes, 0, sendBytes.Length);
阅读代码:
if (stream.DataAvailable) {
byte[] data = new byte[2048];
stream.Read(data, 0, data.Length);
OnIncomingData(Encoding.UTF8.GetString(data, 0, data.Length));
}
请注意,我发送4个字节但接收缓冲区为2048字节。服务器如何知道何时阅读?我不应该收到“hihi”吗?