2014-01-08 2 views
0

40-50 на упаковке, программа считывает 2 - 4 байта больше указанного (темп), что может быть неправильным?C# NetworkStream.Read читает больше, чем указано

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

Что «40-50 на упаковке» означает? Пакет чего? 40-50 литров? –

ответ

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; 

и просто пойти в петлю, и пусть, что первый начитался ...

0

2-мерный может быть отрицательным числом. Вам, вероятно, нужно прочитать размер - 2 вместо?

Смежные вопросы