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)); }); }
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); }); }
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}"); } } }
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);