void BeginConnect_Callback(IAsyncResult iar) { try { ClientSock.EndConnect(iar); //At this point we are connected to the destination if (OnClientConnected != null) { OnClientConnected.Invoke(); } SReceivedData ReceivedData = new SReceivedData { NextBufferSize = -1, Buffer = new byte[4] }; ClientSock.BeginReceive(ReceivedData.Buffer, 0, 4, SocketFlags.None, BeginReceive_Callback, ReceivedData); } catch { Reconnect(); } }
void HandleReceivedBuffer(int ReceivedDataSize, SReceivedData ReceivedData) { if (ReceivedDataSize != ReceivedData.Buffer.Length) { ClientSock.BeginReceive(ReceivedData.Buffer, ReceivedDataSize, ReceivedData.Buffer.Length - ReceivedDataSize, SocketFlags.None, BeginReceive_Callback, ReceivedData); } else { if (ReceivedData.NextBufferSize == -1) { ReceivedData.NextBufferSize = BitConverter.ToInt32(ReceivedData.Buffer, 0); ReceivedData.Buffer = new byte[ReceivedData.NextBufferSize]; ClientSock.BeginReceive(ReceivedData.Buffer, 0, ReceivedData.NextBufferSize, SocketFlags.None, BeginReceive_Callback, ReceivedData); } else { if (OnClientReceivedData != null) { OnClientReceivedData.Invoke(ReceivedData.Buffer); } ReceivedData.NextBufferSize = -1; ReceivedData.Buffer = new byte[4]; ClientSock.BeginReceive(ReceivedData.Buffer, 0, ReceivedData.Buffer.Length, SocketFlags.None, BeginReceive_Callback, ReceivedData); } } }