StreamReader.按顺序阅读课文
本文关键字:顺序 StreamReader | 更新日期: 2023-09-27 18:13:17
我正试图通过NetworkStream将屏幕截图的Base64字符串发送到服务器,似乎我正在接收完整的字符串,问题是它被打乱了…
我想这与它被分割并重新组合有关?怎么做才合适呢?
客户机代码byte[] ImageBytes = Generics.Imaging.ImageToByte(Generics.Imaging.Get_ScreenShot_In_Bitmap());
string StreamData = "REMOTEDATA|***|" + Convert.ToBase64String(ImageBytes);
SW.WriteLine(StreamData);
SW.Flush();
服务器代码char[] ByteData = new char[350208];
SR.Read(ByteData, 0, 350208);
string Data = new string(ByteData);
File.WriteAllText("C:''RecievedText", Data);
发送的消息和字符数组的大小完全相同。'
编辑:在摆弄它之后,我意识到文本没有被打乱,但正确的文本是在前面的流后面。我如何确保流是清晰的或得到整个文本
您可能没有阅读前面的所有回复。必须在循环中读取,直到没有数据为止,如下所示:
char[] ByteData = new char[350208];
int totalChars = 0;
int charsRead;
while ((charsRead = SR.Read(ByteData, totalChars, ByteData.Length - totalChars) != 0)
{
totalChars += charsRead;
}
string Data = new string(ByteData, 0, totalChars);
File.WriteAllText("C:''RecievedText", Data);
这里的关键是StreamReader。Read读取到您告诉它的最大字符数。如果没有那么多可用的字符,它将读取可用的字符并返回这些字符。返回值告诉您它读取了多少。你必须继续阅读,直到你得到你想要的字符数,或者直到Read
返回0
。