Пример #1
0
        private static void ConnectionPoolTest()
        {
            INetServerProvider    serverProvider = NetServerProvider.CreateProvider(4096, 2);
            INetTokenPoolProvider poolProvider   = NetTokenPoolProvider.CreateProvider(60);

            poolProvider.TimerEnable(false);

            int port = 12345;

            serverProvider.DisconnectedHanlder = new OnDisconnectedHandler((s) =>
            {
                Console.WriteLine(s.TokenIpEndPoint + "server disconnected");
            });
            serverProvider.AcceptHandler = new OnAcceptHandler((s) =>
            {
                poolProvider.InsertToken(new NetConnectionToken(s));
            });
            bool isStart = serverProvider.Start(port);

            if (isStart)
            {
again:
                for (int i = 0; i < 2; ++i)
                {
                    INetClientProvider clientProvider = NetClientProvider.CreateProvider();
                    clientProvider.DisconnectedHanlder = new OnDisconnectedHandler((s) =>
                    {
                        // Console.WriteLine(s.TokenIpEndPoint + " client disconnected");
                    });
                    bool isConnected = clientProvider.ConnectTo(port, "127.0.0.1");

                    Console.WriteLine(isConnected);
                }
                Console.WriteLine(poolProvider.Count);
                string info = Console.ReadLine();
                if (info == "again")
                {
                    while (poolProvider.Count > 0)
                    {
                        // poolProvider.Clear(true);
                        var item = poolProvider.GetTopToken();
                        if (item != null)
                        {
                            serverProvider.CloseToken(item.Token);
                            poolProvider.RemoveToken(item, false);
                        }
                    }
                    goto again;
                }
                else if (info == "stop")
                {
                    serverProvider.Stop();
                    goto again;
                }
                Console.ReadKey();
            }
        }