阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Apache Mina开发手册

113次阅读
没有评论

共计 3398 个字符,预计需要花费 9 分钟才能阅读完成。

一、介绍

Apache Mina 是一个网络应用框架,简化用户开发高性能、高可扩展性的网络应用程序的难度。Mina 提供了一个抽象的事件驱动的异步 API,通过 Java NIO 实现各种传输协议如 TCP/IP 和 UDP/IP。

Apache Mina 经常用作:

1)NIO 框架库

2)客户端 / 服务器通信框架库

3)网络 Socket 通信库

 

Apache Mina 还伴随有不少子项目:

1)Asyncweb

构建于 Apache Mina 异步框架之上的 HTTP 服务器

2)FtpServer

一个 FTP 服务器

3)SSHd

一个 Java 库,支持 SSHH 协议

4)Vysper

一个 XMPP 服务器

Apache Mina 白名单实现方法 http://www.linuxidc.com/Linux/2012-08/68992.htm

Apache MINA 实战 http://www.linuxidc.com/Linux/2012-04/59337.htm

二、Apache Mina 下载

下载最新的 Mina v2.0.8 版

地址见:http://mina.apache.org/mina-project/downloads.html

 

三、用 Mina 开发时间服务器

说明一下,其实是基于官方的例子,略作了修改,因为发现官方的例子太陈旧,甚至包含了 deprecated 的方法。

 

1、先决条件

Apache Mina 2.0.8 Core

JDK 7

SLF4J+LOGBACK

 

2、项目依赖包

mina-core-2.0.8.jar

slf4j-api-1.6.6.jar

Apache Mina 开发手册

 

3、编写基于 Mina 的 Time 服务器

package ch.chiqms.server;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
 
importorg.apache.mina.core.service.IoAcceptor;
importorg.apache.mina.core.session.IdleStatus;
importorg.apache.mina.filter.codec.ProtocolCodecFilter;
importorg.apache.mina.filter.codec.textline.TextLineCodecFactory;
importorg.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
 
public class MinaTimeServer {
        privatestatic final int PORT = 9123;
        publicstatic void main(String[] args){
                  // 监听连接的对象
                  IoAcceptoracceptor = new NioSocketAcceptor();
                 
                  // 配置过滤器
                  //logger 过滤器会输出所有的信息,例如新创建的会话、消息的接收、消息的发送、会话的关闭
                  //codec 过滤器会转换二进制活协议规定的数据为消息对象,这里是处理基于文本的消息
                  acceptor.getFilterChain().addLast(“logger”,new LoggingFilter());
                  acceptor.getFilterChain().addLast(“codec”,new ProtocolCodecFilter(
                                    newTextLineCodecFactory(Charset.forName(“UTF-8”))));
               
                  //
                  acceptor.setHandler(newTimeServerHandler());
                 
                  // 设置输入缓冲区的大小和会话的 IDLE 熟悉
                  acceptor.getSessionConfig().setReadBufferSize(2048);
                  acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE,10);
                 
                  try{
                            acceptor.bind(newInetSocketAddress(PORT));
                  }catch (IOException e) {
                            e.printStackTrace();
                  }
        }
}

4、编写 Time 服务的 Handler

package ch.chiqms.server;
 
import java.text.SimpleDateFormat;
import java.util.Calendar;
 
import org.apache.mina.core.service.IoHandlerAdapter;
importorg.apache.mina.core.session.IdleStatus;
importorg.apache.mina.core.session.IoSession;
 
public class TimeServerHandler extendsIoHandlerAdapter {
 
        @Override
        publicvoid exceptionCaught(IoSession session, Throwable cause)
                            throwsException {
                  cause.printStackTrace();
        }
 
        @Override
        publicvoid messageReceived(IoSession session, Object message) throws Exception {
                  Stringstr = message.toString();
                  if(str.trim().equalsIgnoreCase(“quit”)){
                            session.close(true);
                            return;
                  }
                  Calendartime = Calendar.getInstance();
                  SimpleDateFormatdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
                  session.write(df.format(time.getTime()));
                  System.out.println(“TimeMessage written…”);
        }
 
        @Override
        publicvoid sessionIdle(IoSession session, IdleStatus status) throws Exception {
                  System.out.println(“IDLE”+session.getIdleCount(status));
        }
 
}

5、运行 MinaTimeServer

 

在命令行输入 telnet 127.0.0.1 9123

Apache Mina 开发手册 

服务器端的输出也可以看到:

SLF4J: Failed to load class”org.slf4j.impl.StaticLoggerBinder”.
SLF4J: Defaulting to no-operation (NOP)logger implementation
SLF4J: Seehttp://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Time Message written…
Time Message written…
Time Message written…

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计3398字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中