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);
}
}