C# NetworkStream.Read无法接收所有数据

C# NetworkStream.Read无法接收所有数据,c#,image,sockets,stream,networkstream,C#,Image,Sockets,Stream,Networkstream,我在用C#写一个发送图像的代码 当我从localhost作为IP(同一台PC)进行写或读操作时,一切都能正常工作 但当我使用另一台电脑阅读时,我会出错;图像有时仅为图像的一半、四分之一,有时为零 这是阅读代码 byte[] readBytes(int length) { NetworkStream stream = client.GetStream(); byte[] bytes = new byte[length]; int recv= stream.Read(byt

我在用C#写一个发送图像的代码 当我从
localhost
作为IP(同一台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;
}
byte[]readBytes(int-length)
{
NetworkStream=client.GetStream();
字节[]字节=新字节[长度];
int recv=stream.Read(字节,0,长度);
while(recv

我认为我的while循环不正确。有人能帮我吗?

您的while循环不正确。首先,条件是错误的。假设每次调用
Read
只接收一个字节(如果不清楚,请在一张纸上尝试)。此外,如果循环不止一次,
Read
将写入缓冲区中的错误位置。这就是它在本地主机上工作的原因:连接几乎是瞬时的,第一次读取时接收所有内容