总览链接:
https://blog.csdn.net/a1234012340a/article/details/91040073
客户端代码:
static async Task RunClientAsync()
{
var group = new MultithreadEventLoopGroup();
try
{
var bootstrap = new Bootstrap();
bootstrap
.Group(group)
.Channel<TcpSocketChannel>()
.Option(ChannelOption.TcpNodelay, true)
.Handler(
new ActionChannelInitializer<ISocketChannel>(
channel =>
{
IChannelPipeline pipeline = channel.Pipeline;
pipeline.AddLast(new LoggingHandler());
pipeline.AddLast("framing-enc", new LengthFieldPrepender(2));
pipeline.AddLast("framing-dec", new LengthFieldBasedFrameDecoder(ushort.MaxValue, 0, 2, 0, 2));
pipeline.AddLast(new IdleStateHandler(5, 0, 0));
pipeline.AddLast("echo", new EchoClientHandler());
}));
IPAddress ip = IPAddress.Parse("127.0.0.1");
IChannel clientChannel = await bootstrap.ConnectAsync(new IPEndPoint(ip, 8007));
// 建立死循环,类同于While(true)
for (; ; ) // (4)
{
Console.WriteLine("input you data:");
// 根据设置建立缓存区大小
IByteBuffer initialMessage = Unpooled.Buffer(256); // (1)
string r = Console.ReadLine();
// 将数据流写入缓冲区
initialMessage.WriteBytes(Encoding.UTF8.GetBytes(r ?? throw new InvalidOperationException())); // (2)
// 将缓冲区数据流写入到管道中
await clientChannel.WriteAndFlushAsync(initialMessage); // (3)
if (r.Contains("bye"))
break;
}
Console.WriteLine("byebye");
await clientChannel.CloseAsync();
}
finally
{
await group.ShutdownGracefullyAsync(TimeSpan.FromMilliseconds(100), TimeSpan.FromSeconds(1));
}
}
static void Main() => RunClientAsync().Wait();
客户端Handler代码:
readonly IByteBuffer initialMessage;
public override void ChannelActive(IChannelHandlerContext context) => context.WriteAndFlushAsync(this.initialMessage);
public override void ChannelRead(IChannelHandlerContext context, object message)
{
#region 无操作
//什么也不想做
#endregion
}
public override void ChannelReadComplete(IChannelHandlerContext context) => context.Flush();
public override void ExceptionCaught(IChannelHandlerContext context, Exception exception)
{
Console.WriteLine("Exception: " + exception);
context.CloseAsync();
}
至此客户端打完收工
完全个人研究,有错希望大神纠正。也可留下您的联系方式,共同探讨
作者:Henny_CHN
转载请标明出处,原文地址:
https://blog.csdn.net/a1234012340a/article/details/93138687
如果感觉本文对您有帮助,请留下您的赞,您的支持是我坚持写作最大的动力,谢谢!