public static async Task Test()
        {
            var logger = new AllPet.Common.Logger();
            //服務器端
            var systemR = AllPet.Pipeline.PipelineSystem.CreatePipelineSystemV1(logger);

            systemR.OpenNetwork(new AllPet.peer.tcp.PeerOption());
            systemR.OpenListen(new System.Net.IPEndPoint(System.Net.IPAddress.Any, 8888));
            systemR.RegistModule("hello", new Hello());
            systemR.RegistModule("hello2", new Hello());
            systemR.Start();


            //客戶端
            var systemL = AllPet.Pipeline.PipelineSystem.CreatePipelineSystemV1(logger);

            systemL.RegistModule("me", new Local());
            systemL.OpenNetwork(new AllPet.peer.tcp.PeerOption());
            systemL.Start();

            var remote = new System.Net.IPEndPoint(System.Net.IPAddress.Parse("127.0.0.1"), 8888);

            //連接,也可以GetPipeline的时候自动连接,自动连接就需要处理连接什么时候接通的问题了
            var systemref = await systemL.ConnectAsync(remote);

            var actor = systemL.GetPipeline(null, "this/me");

            while (true)
            {
                Console.Write("1.remote>");
                var line = Console.ReadLine();
                if (line == "exit")
                {
                    systemR.CloseListen();
                    systemR.CloseNetwork();
                    systemR.Dispose();
                    systemL.Dispose();
                    break;
                }
                if (line == "")
                {
                    continue;
                }
                actor.Tell(System.Text.Encoding.UTF8.GetBytes(line));
            }
        }
        public static void test()
        {
            var logger = new AllPet.Common.Logger();
            var peer   = AllPet.peer.tcp.PeerV2.CreatePeer(logger);

            peer.Start(new AllPet.peer.tcp.PeerOption()
            {
            });
            var ep = new System.Net.IPEndPoint(System.Net.IPAddress.Parse("127.0.0.1"), 888);

            peer.OnAccepted += (id, endpoint) =>
            {
                Console.WriteLine("accepted:" + id);
            };

            peer.OnConnected += (id, endpoint) =>
            {
                hasLinked[id] = true;
            };
            peer.OnClosed += (id) =>
            {
            };
            peer.OnLinkError += (ulong id, Exception err) =>
            {
            };
            long recvcount = 0;

            peer.OnRecv += (ulong id, byte[] _data) =>
            {
                var len  = BitConverter.ToUInt32(_data, 0);
                var _str = System.Text.Encoding.UTF8.GetString(_data, 4, _data.Length - 4);
                System.Threading.Interlocked.Increment(ref recvcount);
                if (recvcount % 1000 == 0)
                {
                    Console.WriteLine("onrecv:count=" + recvcount + " len=" + len + " txt=" + _str);
                }
            };
            peer.Listen(ep);

            //connect it;
            logger.Warn("connect 10");
            for (var i = 0; i < 10; i++)
            {
                linkedid[i] = peer.Connect(ep);
            }
            while (hasLinked.Count < linkedid.Count)
            {
                System.Threading.Thread.Sleep(1);
            }
            logger.Warn("connected 10");

            logger.Warn("send 1k");
            Random r   = new Random();
            var    str = "abcdefghijklmnoqrstuvwxyzabcdefghijklmnoqrstuvwxyzabcdefghijklmnoqrstuvwxyzabcdefghijklmnoqrstuvwxyz";

            byte[] data     = System.Text.Encoding.UTF8.GetBytes(str);
            byte[] datahead = BitConverter.GetBytes(data.Length);
            data = datahead.Concat(data).ToArray();
            for (var i = 0; i < 100000; i++)
            {
                var target   = r.Next(linkedid.Count);
                var targetid = linkedid[target];

                System.Threading.ThreadPool.QueueUserWorkItem((s) =>
                {
                    peer.Send(targetid, data);
                });
            }
            Console.ReadLine();
        }