// note this ctor blocks until the packet is fully read public SIncomingPacket(NetworkStream stream) { //BinaryReader headerReader = new BinaryReader(stream, System.Text.Encoding.Unicode); BinaryReader reader = new BinaryReader(stream); header = new CTSPacketHeader(reader); //check that we have valid information... It would be better to change the protocol to have some leading dummy bytes that we could check for if (header.mSize < 0 || header.mSize > cMaxPacketSize) { throw new System.Exception(String.Format("Invalid Packet Size:{0} Type:{1}", header.mSize, header.mType)); } //buffer = new byte[header.mSize]; //stream.Read(buffer, 0, header.mSize); if (header.mSize > 0) { buffer = reader.ReadBytes(header.mSize); } }