C# NetworkStream.Read无法接收所有数据
我在用C#写一个发送图像的代码 当我从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
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
将写入缓冲区中的错误位置。这就是它在本地主机上工作的原因:连接几乎是瞬时的,第一次读取时接收所有内容