我正在使用C#编写用于发送图像的代码
当我从localhost
作为IP(同一台PC)写作或阅读时,一切都很完美
但是当我用另一台PC阅读时,我收到了一个错误;图像有时只是图像的四分之一,图像的四分之一,有时候什么都没有
这是阅读代码
byte[] readBytes(int length)
{
NetworkStream stream = client.GetStream();
byte[] bytes = new byte[length];
int recv= stream.Read(bytes, 0, length);
while (recv < length)
{
length -= recv;
recv = stream.Read(bytes, recv, length);
}
return bytes;
}
我认为我的while循环不正确。有人可以帮我这个吗?
答案 0 :(得分:2)
你的while循环不正确。首先,条件是错误的。想象一下,对Read
的每次调用只收到一个字节(如果不清楚的话,在一张纸上试一试)。此外,如果它循环多次,Read
将写入缓冲区中的错误位置。这就是为什么它适用于localhost:连接几乎是即时的,第一个Read
接收到所有内容。