Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#NetworkStream-小于缓冲区大小的数据_C#_Networkstream - Fatal编程技术网

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

C#NetworkStream-小于缓冲区大小的数据,c#,networkstream,C#,Networkstream,如果我的缓冲区大小为eg 2048,并发送一条类似“hi”的消息,然后再发送另一条“hi”,那么客户端如何知道第一条消息的结束位置和下一条消息的开始位置?我读到一些人建议发送数据的长度,但这似乎没有必要,因为客户端不知何故知道消息的结尾 编写代码: byte[] sendBytes = Encoding.UTF8.GetBytes("hi"); client.GetStream().Write(sendBytes, 0, sendBytes.Length); 阅读代码: if (stream.

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

Read()的返回值告诉您读取了多少字节。将其存储在变量中,并将其作为第三个参数传递给GetString()。您没有回答我的问题,但确实解决了我的问题,这很好:-)