一、DotNetty介绍
DotNetty是微软的Azure团队,使用C#实现的Netty的版本发布。不但使用了C#和.Net平台的技术特点,并且保留了Netty原来绝大部分的编程接口。让我们在使用时,完全可以依照Netty官方的教程来学习和使用DotNetty应用程序。
那Netty又是什么尼?
Netty 是一个提供 asynchronous event-driven (异步事件驱动)的网络应用框架,是一个用以快速开发高性能、可扩展协议的服务器和客户端。
换句话说,Netty 是一个 NIO 客户端服务器框架,使用它可以快速简单地开发网络应用程序,比如服务器和客户端的协议。Netty 大大简化了网络程序的开发过程比如 TCP 和 UDP 的 socket 服务的开发。
“快速和简单”并不意味着应用程序会有难维护和性能低的问题,Netty 是一个精心设计的框架,它从许多协议的实现中吸收了很多的经验比如 FTP、SMTP、HTTP、许多二进制和基于文本的传统协议.因此,Netty 已经成功地找到一个方式,在不失灵活性的前提下来实现开发的简易性,高性能,稳定性。
DotNetty同时也是开源的,它的源代码托管在Github上: https://github.com/azure/dotnetty
Netty 的官方文档 : http://netty.io/wiki/all-documents.html
二、Echo(应答服务)
看代码学习是最偷懒的方法,(PS:谁还不喜欢偷懒,^~^!),直接看官方的给代码:
服务端:
1、等待连接:
static async Task RunServerAsync()
{
ExampleHelper.SetConsoleLogger();
IEventLoopGroup bossGroup;
IEventLoopGroup workerGroup;
// DotNetty.Transport 是DotNetty核心的实现,Socket基础框架,通信模式:异步非阻塞。
// DotNetty.Transport.Libuv是DotNetty自己实现基于Libuv (高性能的,事件驱动的I/O库) 核心的实现。
if (ServerSettings.UseLibuv)
{
// 申明一个主回路调度组
var dispatcher = new DispatcherEventLoopGroup();
bossGroup = dispatcher;
workerGroup = new WorkerEventLoopGroup(dispatcher);
}
else
{
//一个EventExecutor池
bossGroup = new MultithreadEventLoopGroup(1);//主工作线程组,设置为1个线程
workerGroup = new MultithreadEventLoopGroup();
}
//加密证书
X509Certificate2 tlsCertificate = null;
if (ServerSettings.IsSsl)//如果使用加密通道
{