Exemple #1
0
        public override void OnReceive(ISocketContext <CommandLineMessage> context, CommandLineMessage msg)
        {
            _logger.LogInformation("receive msg from {0},{1}", context.RemoteEndPoint, msg.Command);
            string replyMessage = string.Empty;
            string replyCmd     = string.Empty;

            switch (msg.Command)
            {
            case "echo":
                replyMessage = msg.Parameters[0];
                replyCmd     = "echo";
                break;

            case "init":
                replyMessage = "ok";
                replyCmd     = "init_reply";

                break;

            default:
                replyMessage = "error unknow command";
                break;
            }


            Task.Run(async() =>
            {
                await context.SendAsync(new CommandLineMessage(replyCmd, replyMessage));
            });
        }
Exemple #2
0
 private static void Client_OnIdleState(object sender, Peach.EventArgs.IdleStateEventArgs <CommandLineMessage> e)
 {
     Task.Run(async() =>
     {
         Console.WriteLine("send idel cmd");
         var idelCmd = new CommandLineMessage("idle");
         await e.Context.SendAsync(idelCmd);
     });
 }
Exemple #3
0
        public void handle(CommandLineMessage message)
        {
            var seg = message.Parameters;

            if (seg.Length > 1)
            {
                var succ = seg[1] == Guid;
                if (succ)
                {
                    RecvSuccStatus.TryAdd(Seq, succ);
                }
                else
                {
                    RecvFailStatus.AddOrUpdate(Seq, s => new string[] { message.FullCommandLine, "" }, (u, old) => new object[] { message, old[1] });
                }
                if (Seq % 3000 == 0)
                {
                    Console.WriteLine($"client recv: {Seq:0000000}: {succ}");
                }
            }
        }
Exemple #4
0
        static void Main(string[] args)
        {
            /*
             * TcpClientOption option = new TcpClientOption {
             *  Certificate = Path.Combine(AppContext.BaseDirectory, "../../../../../shared/dotnetty.com.pfx"),
             *  CertificatePassword = "******"
             * };
             */
            //实例化Client 需要传入使用的协议
            //TcpClient<CommandLineMessage> client = new TcpClient<CommandLineMessage>(option,new CommandLineChannelHandlerPipeline());
            TcpClient <CommandLineMessage> client = new TcpClient <CommandLineMessage>(new CommandLineChannelHandlerPipeline());

            client.OnReceived     += Client_OnReceived;
            client.OnConnected    += Client_OnConnected;
            client.OnIdleState    += Client_OnIdleState;
            client.OnDisconnected += Client_OnDisconnected;
            client.OnError        += Client_OnError;
            Task.Run(async() =>
            {
                //连接服务器,可以链接多个哦
                var socketContext = await client.ConnectAsync(new IPEndPoint(IPUtility.GetLocalIntranetIP(), 5566));

                //发送消息
                Console.WriteLine("send msg init");
                var initCmd = new CommandLineMessage("init");
                await socketContext.SendAsync(initCmd);

                Console.WriteLine("send msg echo hello");
                //发送消息2
                var echoCmd = new CommandLineMessage("echo", "hello");
                await socketContext.SendAsync(echoCmd);


                Console.WriteLine("Press any key to exit!");
                Console.ReadKey();
                //关闭链接
                await client.ShutdownGracefullyAsync(2000, 2000);
            }).Wait();
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="message"></param>
 /// <returns></returns>
 public abstract TSendMessageInfo CreateMessageInfo(CommandLineMessage message);