longshine / Mina.NET

.NET implementation of Apache MINA
Apache License 2.0
110 stars 45 forks source link

Mina.NET

.NET implementation of Apache MINA. I like the ideas in it, simple yet functional, but I failed to find one in .NET, finally I created one.

Mina.NET is a network application framework which helps users develop high performance and high scalability network applications easily. It provides an abstract event-driven asynchronous API over various transports such as TCP/IP via async socket.

Mina.NET is often called:

Features

Mina.NET is a simple yet full-featured network application framework which provides:

Quick Start

  IoAcceptor acceptor = new AsyncSocketAcceptor();

  acceptor.FilterChain.AddLast("logger", new LoggingFilter());
  acceptor.FilterChain.AddLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Encoding.UTF8)));

  acceptor.ExceptionCaught += (o, e) => Console.WriteLine(e.Exception);

  acceptor.SessionIdle += (o, e) => Console.WriteLine("IDLE " + e.Session.GetIdleCount(e.IdleStatus));

  acceptor.MessageReceived += (o, e) =>
  {
    String str = e.Message.ToString();

    // "Quit" ? let's get out ...
    if (str.Trim().Equals("quit", StringComparison.OrdinalIgnoreCase))
    {
      e.Session.Close(true);
      return;
    }

    // Send the current date back to the client
    e.Session.Write(DateTime.Now.ToString());
    Console.WriteLine("Message written...");
  };

  acceptor.Bind(new IPEndPoint(IPAddress.Any, 8080));

See https://mina.codeplex.com/documentation for more.

License

Licensed under the Apache License, Version 2.0. You may obtain a copy of the License at LICENSE or http://www.apache.org/licenses/LICENSE-2.0.