Исправил я проблему, если кому-то пригодится ее суть была такова:
1) Узнал сколько байт придет на основную информацию, я грузил ее разом примерно так stream.read(buffer, 0, size);
2) Массив приходил в не полном объеме, потому что остальная часть инфы еще не пришла, насколько я понял потому что tcp не гарантирует что данные придут такими же порциями, как и были отправлены, в частности у меня это было только при превышении 2к байт информации
Проблема решается вот таким приемом информации
Код
private byte[] ReadStream (NetworkStream stream,int countBytesNeedReed) {
int readSoFar = 0;
byte[] msg = new byte[countBytesNeedReed];
while (readSoFar < countBytesNeedReed) {
var read = stream.Read(msg,readSoFar,msg.Length - readSoFar);
readSoFar += read;
if (read == 0)
break;
}
return msg;
}