rendered paste bodypublic void RecvCallback(IAsyncResult Result) { try { if (Result == null) return; int RecvBytes = Socket.EndReceive(Result); byte[] TempBuffer = new byte[RecvBytes]; if (BytesToGo == 0 && RecvBytes >= 2) { Array.Copy(RecvBuffer, 0, TempBuffer, 0, 2); BytesToGo = (int)Marshal.ConvertToInt16(TempBuffer); } if (BytesToGo == 0 && PacketBuffer.Length >= 2) { Array.Copy(PacketBuffer, 0, TempBuffer, 0, 2); BytesToGo = (int)Marshal.ConvertToInt16(TempBuffer); } if(BytesToGo > 0) { BytesToGo -= RecvBytes; } if (RecvBytes > Packet.PacketSize) { log.Info("RecvCallback::Buffer overflow!"); return; } Array.Copy(RecvBuffer, 0, PacketBuffer, PacketBuffer.Length, RecvBytes); RecvBuffer = new byte[Packet.PacketSize]; if (PacketBuffer.Length > 0 && BytesToGo == 0) { ProcessBytes(PacketBuffer); PacketBuffer = new byte[Packet.PacketSize]; } BeginRecv(); } catch (Exception ex) { log.Info("RecvCallback::Exception", ex); } }