Files
Max Gortman 4f28a55b48 Move to .NET Core tooling (#170)
Motivation
.NET Core tooling allows building for both .NET Framework and .NET Standard while easing pains of running tests and packaging.

Modifications
- csproj -> xproj + project.json
- support for .NET Standard 1.3
- build script is now based on CAKE
- using dotnet CLI for building, testing, packing
- strong name by default (snk included)

Result
DotNetty works on .NET Core and any other platform supporting .NET Standard 1.3+.
2016-11-07 17:50:24 -08:00

59 lines
1.8 KiB
C#

// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
namespace Telnet.Server
{
using System;
using System.Net;
using System.Threading.Tasks;
using DotNetty.Transport.Channels;
public class TelnetServerHandler : SimpleChannelInboundHandler<string>
{
public override void ChannelActive(IChannelHandlerContext contex)
{
contex.WriteAsync(string.Format("Welcome to {0} !\r\n", Dns.GetHostName()));
contex.WriteAndFlushAsync(string.Format("It is {0} now !\r\n", DateTime.Now));
}
protected override void ChannelRead0(IChannelHandlerContext contex, string msg)
{
// Generate and write a response.
string response;
bool close = false;
if (string.IsNullOrEmpty(msg))
{
response = "Please type something.\r\n";
}
else if (string.Equals("bye", msg, StringComparison.OrdinalIgnoreCase))
{
response = "Have a good day!\r\n";
close = true;
}
else
{
response = "Did you say '" + msg + "'?\r\n";
}
Task wait_close = contex.WriteAndFlushAsync(response);
if (close)
{
Task.WaitAll(wait_close);
contex.CloseAsync();
}
}
public override void ChannelReadComplete(IChannelHandlerContext contex)
{
contex.Flush();
}
public override void ExceptionCaught(IChannelHandlerContext contex, Exception e)
{
Console.WriteLine("{0}", e.StackTrace);
contex.CloseAsync();
}
public override bool IsSharable => true;
}
}