12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using DotNetty.Handlers.Timeout;
- using DotNetty.Transport.Bootstrapping;
- using DotNetty.Transport.Channels;
- using DotNetty.Transport.Channels.Sockets;
- using NotNettyServer;
-
- namespace TestServer
- {
- class Program
- {
- private static int Port = 4001;
-
- static void Main(string[] args)
- {
- Console.WriteLine("Server");
- RunServerAsync().Wait();
- }
-
- static async Task RunServerAsync()
- {
- var bossGroup = new MultithreadEventLoopGroup(1);
- var workerGroup = new MultithreadEventLoopGroup();
-
- try
- {
- var bootstrap = new ServerBootstrap();
- bootstrap
- .Group(bossGroup, workerGroup)
- .Channel<TcpServerSocketChannel>()
- .Option(ChannelOption.SoBacklog, 1024)
- .ChildHandler(new ActionChannelInitializer<ISocketChannel>(channel =>
- {
- IChannelPipeline pipeline = channel.Pipeline;
- // pipeline.AddLast("framing-enc", new LengthFieldPrepender(10));
- // pipeline.AddLast("framing-dec", new LengthFieldBasedFrameDecoder(ushort.MaxValue, 10, 2, 1, 0));
- pipeline.AddLast("idle", new IdleStateHandler(10, 20, 15));
- pipeline.AddLast("echo", new ServerHandler());
- }));
- IChannel boundChannel = await bootstrap.BindAsync(Port);
-
- Console.ReadLine();
-
- await boundChannel.CloseAsync();
- }
- finally
- {
- await Task.WhenAll(
- bossGroup.ShutdownGracefullyAsync(TimeSpan.FromMilliseconds(100), TimeSpan.FromSeconds(1)),
- workerGroup.ShutdownGracefullyAsync(TimeSpan.FromMilliseconds(100), TimeSpan.FromSeconds(1)));
- }
- }
- }
- }
|