C#NetworkStream.Read读取超过指定的数量

时间:2014-01-08 14:35:22

标签: c#

程序包上的程序读取40-50,程序读取比指定的(temp)大2-4个字节,可能出错了什么?

size =  nsgsout.Read(buf, 0, 2);

while (size != 2)
{
  size += nsgsout.Read(buf, size, 2 - size);
}

temp = (buf[0] + buf[1] * 256);
size = nsgsout.Read(buf, 2, temp - 2);

while (size != temp - 2)
{
    size += nsgsout.Read(buf, size + 2, temp - size + 2);
}  

2 个答案:

答案 0 :(得分:5)

我认为这不符合您的想法:

temp - size+2

我怀疑你的意思是:

temp - (size + 2)

但它确实等同于

(temp - size) + 2

我怀疑你真的希望这个电话是:

size += nsgsout.Read(buf, size + 2, temp - size - 2);

另请注意,您可以更改此内容:

size = nsgsout.Read(buf, 2, temp - 2);

size = 0;

然后进入循环并让第一次读取......

答案 1 :(得分:0)

2尺寸可以是负数。您可能需要读取大小 - 2而不是?!