C#NetworkStream - 小于缓冲区大小的数据

时间:2017-06-12 22:01:07

标签: c# networkstream

如果我的缓冲区大小为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”吗?

0 个答案:

没有答案