public static void ReadServertData(IAsyncResult ar) //Socket read/recevie { try { if (!TcpClient.Connected || !IsConnected) { IsConnected = false; return; } int recevied = SslClient.EndRead(ar); if (recevied > 0) { Offset += recevied; HeaderSize -= recevied; if (HeaderSize == 0) { HeaderSize = BitConverter.ToInt32(Buffer, 0); Debug.WriteLine("/// Plugin Buffersize " + HeaderSize.ToString() + " Bytes ///"); if (HeaderSize > 0) { Offset = 0; Buffer = new byte[HeaderSize]; while (HeaderSize > 0) { int rc = SslClient.Read(Buffer, (int)Offset, (int)HeaderSize); if (rc <= 0) { IsConnected = false; return; } Offset += rc; HeaderSize -= rc; if (HeaderSize < 0) { IsConnected = false; return; } } Thread thread = new Thread(new ParameterizedThreadStart(Packet.Read)); thread.Start(Buffer); Offset = 0; HeaderSize = 4; Buffer = new byte[HeaderSize]; } else { HeaderSize = 4; Buffer = new byte[HeaderSize]; Offset = 0; } } else if (HeaderSize < 0) { IsConnected = false; return; } SslClient.BeginRead(Buffer, (int)Offset, (int)HeaderSize, ReadServertData, null); } else { IsConnected = false; return; } } catch { IsConnected = false; return; } }
public void ReadClientData(IAsyncResult ar) { try { if (!TcpClient.Connected) { Disconnected(); return; } else { int recevied = SslClient.EndRead(ar); if (recevied > 0) { HeaderSize -= recevied; Offset += recevied; switch (ClientBufferRecevied) { case false: { if (HeaderSize == 0) { HeaderSize = BitConverter.ToInt32(ClientBuffer, 0); if (HeaderSize > 0) { ClientBuffer = new byte[HeaderSize]; Debug.WriteLine("/// Server Buffersize " + HeaderSize.ToString() + " Bytes ///"); Offset = 0; ClientBufferRecevied = true; } } else if (HeaderSize < 0) { Disconnected(); return; } break; } case true: { lock (Settings.LockReceivedSendValue) Settings.ReceivedValue += recevied; BytesRecevied += recevied; if (HeaderSize == 0) { ThreadPool.QueueUserWorkItem(new Packet { client = this, data = ClientBuffer, }.Read, null); Offset = 0; HeaderSize = 4; ClientBuffer = new byte[HeaderSize]; ClientBufferRecevied = false; } else if (HeaderSize < 0) { Disconnected(); return; } break; } } SslClient.BeginRead(ClientBuffer, (int)Offset, (int)HeaderSize, ReadClientData, null); } else { Disconnected(); return; } } } catch { Disconnected(); return; } }
public void ReadServertData(IAsyncResult ar) { try { if (!ClientSocket.IsConnected || !IsConnected) { IsConnected = false; Dispose(); return; } int recevied = SslClient.EndRead(ar); if (recevied > 0) { MS.Write(Buffer, 0, recevied); if (MS.Length == 4) { Buffersize = BitConverter.ToInt32(MS.ToArray(), 0); Debug.WriteLine("/// Client Buffersize " + Buffersize.ToString() + " Bytes ///"); MS.Dispose(); MS = new MemoryStream(); if (Buffersize > 0) { Buffer = new byte[Buffersize]; while (MS.Length != Buffersize) { int rc = SslClient.Read(Buffer, 0, Buffer.Length); if (rc == 0) { IsConnected = false; Dispose(); return; } MS.Write(Buffer, 0, rc); Buffer = new byte[Buffersize - MS.Length]; } if (MS.Length == Buffersize) { ThreadPool.QueueUserWorkItem(Packet.Read, MS.ToArray()); Buffer = new byte[4]; MS.Dispose(); MS = new MemoryStream(); } else { Buffer = new byte[Buffersize - MS.Length]; } } } SslClient.BeginRead(Buffer, 0, Buffer.Length, ReadServertData, null); } else { IsConnected = false; Dispose(); return; } } catch { IsConnected = false; Dispose(); return; } }
public async void ReadClientData(IAsyncResult ar) { try { if (!TcpClient.Connected) { Disconnected(); return; } else { int Recevied = SslClient.EndRead(ar); if (Recevied > 0) { await ClientMS.WriteAsync(ClientBuffer, 0, Recevied); if (!ClientBufferRecevied) { if (ClientMS.Length == 4) { ClientBuffersize = BitConverter.ToInt32(ClientMS.ToArray(), 0); ClientMS.Dispose(); ClientMS = new MemoryStream(); if (ClientBuffersize > 0) { ClientBuffer = new byte[ClientBuffersize]; Debug.WriteLine("/// Server Buffersize " + ClientBuffersize.ToString() + " Bytes ///"); ClientBufferRecevied = true; } } } else { Settings.Received += Recevied; BytesRecevied += Recevied; if (ClientMS.Length == ClientBuffersize) { ThreadPool.QueueUserWorkItem(new Packet { client = this, data = ClientMS.ToArray(), }.Read, null); ClientBuffer = new byte[4]; ClientMS.Dispose(); ClientMS = new MemoryStream(); ClientBufferRecevied = false; } } SslClient.BeginRead(ClientBuffer, 0, ClientBuffer.Length, ReadClientData, null); } else { Disconnected(); return; } } } catch { Disconnected(); return; } }