第一个DotNetty应用程序
准备工作
NuGet包介绍
DotNetty由九个项目构成,在NuGet中都是单独的包,可以按需引用,其中比较重要的几个是以下几个:
- DotNetty.Common 是公共的类库项目,包装线程池,并行任务和常用帮助类的封装
- DotNetty.Transport 是DotNetty核心的实现
- DotNetty.Buffers 是对内存缓冲区管理的封装
- DotNetty.Codes 是对编码器解码器的封装,包括一些基础基类的实现,我们在项目中自定义的协议,都要继承该项目的特定基类和实现
- DotNetty.Handlers 封装了常用的管道处理器,比如Tls编解码,超时机制,心跳检查,日志等,如果项目中没有用到可以不引用,不过一般都会用到
开始一个项目
- 新建一个解决方案
- 新建一个项目
- 到NuGet中引用 DotNetty.Common DotNetty.Transport DotNetty.Buffers
- 开始编写实例代码
编写测试程序
回声测试应用程序编写 源码下载
- 新建一个解决方案 名字叫NettyTest
- 新建一个项目 名字叫EchoServer
- 到NuGet中引用 DotNetty.Common DotNetty.Transport DotNetty.Buffers
- 新建一个类 EchoServerHandler
using DotNetty.Buffers; using DotNetty.Transport.Channels; using System; using System.Text; namespace EchoServer { /// <summary> /// 因为服务器只需要响应传入的消息,所以只需要实现ChannelHandlerAdapter就可以了 /// </summary> public class EchoServerHandler : ChannelHandlerAdapter { /// <summary> /// 每个传入消息都会调用 /// 处理传入的消息需要复写这个方法 /// </summary> /// <param name="ctx"></param> /// <param name="msg"></param> public override void ChannelRead(IChannelHandlerContext ctx, object msg) { IByteBuffer message = msg as IByteBuff