mirror of
https://github.com/Azure/DotNetty.git
synced 2026-10-19 06:31:20 +08:00
4f28a55b48
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+.
59 lines
1.8 KiB
C#
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;
|
|
}
|
|
} |