예제 #1
0
        static void Main(string[] args)
        {
            if (args.Length != 1)
            {
                Console.WriteLine("params: [Port]");
                Console.WriteLine("Press any key...");
                Console.ReadLine();
                return;
            }

            var port = int.Parse(args[0]);
            SocketAsyncEventArgsPool.ConfigBeforeCreateInstance(300000);
            var pool = SocketAsyncEventArgsPool.GetInstance();
            using (var listener = new ReactiveTCPLibrary.ReactiveTCPListener(new System.Net.IPEndPoint(System.Net.IPAddress.Any, port)))
            {
                TcpClientEventContainer.DefaultInstance.ClientException += new EventHandler<ClientExceptionEventArg>(DefaultInstance_ClientException);
                var stser = new SimpleStringSerializer();
                using (var sub = listener.Subscribe
                    (
                       socket =>
                       {

                           try
                           {

                               var client = new ReactiveTCPLibrary.ReactiveTcpClient<object, string>(socket,
                                   new NaturalCutter<string>(stser),
                                   new NaturalPacker<string>(stser),
                                  () => pool.GetResourceTokenFromPool(),
                                  new NewArrayByteSegmentLocator());
                               bag.AddOrUpdate(client, client, (a,b)=>client);
                               var x = client.Subscribe(p =>
                               {

                                   client.OnNext (new Tuple<string,PacketSentCallback<string>,AbortionChecker>(p,(PacketSentCallback<string>) null,null));
                               });

                               client.Start();
                           }
                           catch (Exception)
                           {

                               return;
                           }
                           //      GCHandle.Alloc(client, GCHandleType.Pinned);

                           //     GCHandle.Alloc(x, GCHandleType.Pinned);

                       }

                    )
                    )
                {
                    Console.WriteLine("Ready");
                    Console.Read();
                }

            }
        }
예제 #2
0
        static void Main(string[] args)
        {
            if (args.Length != 1)
            {
                Console.WriteLine("params: [Port]");
                Console.WriteLine("Press any key...");
                Console.ReadLine();
                return;
            }

            var port = int.Parse(args[0]);

            SocketAsyncEventArgsPool.ConfigBeforeCreateInstance(300000);
            var pool = SocketAsyncEventArgsPool.GetInstance();

            using (var listener = new ReactiveTCPLibrary.ReactiveTCPListener(new System.Net.IPEndPoint(System.Net.IPAddress.Any, port)))
            {
                TcpClientEventContainer.DefaultInstance.ClientException += new EventHandler <ClientExceptionEventArg>(DefaultInstance_ClientException);
                var stser = new SimpleStringSerializer();
                using (var sub = listener.Subscribe
                                 (
                           socket =>
                {
                    try
                    {
                        var client = new ReactiveTCPLibrary.ReactiveTcpClient <object, string>(
                            socket,
                            new NaturalCutter <string>(stser),
                            new NaturalPacker <string>(stser),
                            () => pool.GetResourceTokenFromPool(),
                            new NewArrayByteSegmentLocator());

                        bag.AddOrUpdate(client, client, (a, b) => client);

                        var x = client.Subscribe(p =>
                        {
                            client.OnNext(new Tuple <string, PacketSentCallback <string>, AbortionChecker>(p, (PacketSentCallback <string>)null, null));
                        });


                        client.Start();
                    }
                    catch (Exception)
                    {
                        return;
                    }
                }

                                 )
                       )
                {
                    Console.WriteLine("Ready");
                    Console.Read();
                }
            }
        }
예제 #3
0
        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
            SocketAsyncEventArgsPool.ConfigBeforeCreateInstance(5000,4096,4096);
            SocketAsyncEventArgsPool.GetInstance();// <--warm up;
            using (var listener = new ReactiveTCPLibrary.ReactiveTCPListener(new System.Net.IPEndPoint(System.Net.IPAddress.Any, 54321)))
            {
                TcpClientEventContainer.DefaultInstance.ClientException += new EventHandler<ClientExceptionEventArg>(DefaultInstance_ClientException);

                using (var sub = listener.Subscribe
                    (
                       socket =>
                       {

                           try
                           {
                               var cp = new ConnectionPair(socket, "127.0.0.1", 80);
                               cp.Pin();
                               ////var client = new ReactiveTCPLibrary.ReactiveTcpClient<object, string>(socket,
                               ////    new NaturalCutter<string>(stser),
                               ////    new NaturalPacker<string>(stser),
                               ////   () => SocketAsyncEventArgsPool.GetInstance().GetResourceTokenFromPool(),
                               ////   new NewArrayByteSegmentLocator());
                               //bag.AddOrUpdate(client, client, (a, b) => client);
                               //var x = client.Subscribe(p =>
                               //{

                               //    client.OnNext(new Tuple<string, PacketSentCallback<string>>(p, (PacketSentCallback<string>)null));
                               //});
                           }
                           catch (Exception)
                           {

                               return;
                           }
                           //      GCHandle.Alloc(client, GCHandleType.Pinned);

                           //     GCHandle.Alloc(x, GCHandleType.Pinned);

                       }

                    )
                    )
                {

                    Console.Read();
                }

            }
        }
예제 #4
0
        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
            SocketAsyncEventArgsPool.ConfigBeforeCreateInstance(5000, 4096, 4096);
            SocketAsyncEventArgsPool.GetInstance();// <--warm up;
            using (var listener = new ReactiveTCPLibrary.ReactiveTCPListener(new System.Net.IPEndPoint(System.Net.IPAddress.Any, 54321)))
            {
                TcpClientEventContainer.DefaultInstance.ClientException += new EventHandler <ClientExceptionEventArg>(DefaultInstance_ClientException);

                using (var sub = listener.Subscribe
                                 (
                           socket =>
                {
                    try
                    {
                        var cp = new ConnectionPair(socket, "127.0.0.1", 80);
                        cp.Pin();
                        ////var client = new ReactiveTCPLibrary.ReactiveTcpClient<object, string>(socket,
                        ////    new NaturalCutter<string>(stser),
                        ////    new NaturalPacker<string>(stser),
                        ////   () => SocketAsyncEventArgsPool.GetInstance().GetResourceTokenFromPool(),
                        ////   new NewArrayByteSegmentLocator());
                        //bag.AddOrUpdate(client, client, (a, b) => client);
                        //var x = client.Subscribe(p =>
                        //{

                        //    client.OnNext(new Tuple<string, PacketSentCallback<string>>(p, (PacketSentCallback<string>)null));
                        //});
                    }
                    catch (Exception)
                    {
                        return;
                    }
                    //      GCHandle.Alloc(client, GCHandleType.Pinned);



                    //     GCHandle.Alloc(x, GCHandleType.Pinned);
                }

                                 )
                       )
                {
                    Console.Read();
                }
            }
        }