diff --git a/SocketStudy/PComm/PClient.cs b/SocketStudy/PComm/PClient.cs index a9cf83e..846d2d0 100644 --- a/SocketStudy/PComm/PClient.cs +++ b/SocketStudy/PComm/PClient.cs @@ -184,32 +184,47 @@ namespace PComm if (dataSize >= BUFF_SIZE) Thread.Sleep(100); - byte[] receivedData = new byte[dataSize]; - using (MemoryStream ms = new MemoryStream(dataSize)) + List receivedData = new List(dataSize); + while (dataSize > 0) { - while (dataSize > 0) - { - byte[] buff; - if (dataSize < BUFF_SIZE) - buff = new byte[dataSize]; - else - buff = new byte[BUFF_SIZE]; - - int receiveSize = socket.Receive(buff, buff.Length, SocketFlags.None); - - // Thread.Sleep(1); - ms.Write(buff, 0, buff.Length); - dataSize -= receiveSize; - } - - receivedData = ms.ToArray(); + byte[] buff; + if (dataSize < BUFF_SIZE) + buff = new byte[dataSize]; + else + buff = new byte[BUFF_SIZE]; + + int receiveSize = socket.Receive(buff, buff.Length, SocketFlags.None); + + receivedData.AddRange(buff); + dataSize -= receiveSize; } + + //using (MemoryStream ms = new MemoryStream(dataSize)) + //{ + // while (dataSize > 0) + // { + // byte[] buff; + // if (dataSize < BUFF_SIZE) + // buff = new byte[dataSize]; + // else + // buff = new byte[BUFF_SIZE]; + + // int receiveSize = socket.Receive(buff, buff.Length, SocketFlags.None); + + // // Thread.Sleep(1); + // ms.Write(buff, 0, buff.Length); + // dataSize -= receiveSize; + // } + + // receivedData = ms.ToArray(); + //} + byte[] data; if (isCompressed) - data = PUtil.DecompressBytes(receivedData); + data = PUtil.DecompressBytes(receivedData.ToArray()); else - data = receivedData; + data = receivedData.ToArray(); if (OnReceived != null) OnReceived(this, dataType, data);