Mina2.0快速入门

MinaTimeServer.java

复制代码
package com.vista;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;

import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;


public class MinaTimeServer 
{
    
private static final int PORT = 6488;
    
public static void main(String[] args) throws IOException 
    {
        
//监听即将到来的TCP连接
        IoAcceptor acceptor = new NioSocketAcceptor();
        acceptor.getFilterChain().addLast(
"logger"new LoggingFilter());
        acceptor.getFilterChain().addLast(
"codec"new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName("UTF-8"))));
        
        acceptor.setHandler(
new TimeServerHandler());
        
        acceptor.getSessionConfig().setReadBufferSize(
2048);
        acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 
10);
        
        acceptor.bind(
new InetSocketAddress(PORT));
        System.out.println(
"服务器启动");
    }

}
复制代码

TimeServerHandler.java

复制代码
package com.vista;

import java.util.Date;

import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;

public class TimeServerHandler extends IoHandlerAdapter
{

    
public void exceptionCaught(IoSession session, Throwable cause) throws Exception 
    {
        cause.printStackTrace();
    }
    
public void messageReceived(IoSession session, Object message) throws Exception 
    {
        String strMsg 
= message.toString();
        
if(strMsg.trim().equalsIgnoreCase("quit"))
        {
            session.close();
            
return;
        }
        Date date 
= new Date();
        session.write(date.toString());
        System.out.println(
"Message written");
    }
    
public void sessionIdle(IoSession session, IdleStatus status) throws Exception 
    {
        System.out.println(
"IDLE"+session.getIdleCount(status));        
    }

}
复制代码

测试:

Client Output

Server Output

user@myhost:~> telnet 127.0.0.1 9123
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
hello
Wed Oct 17 23:23:36 EDT 2007
quit
Connection closed by foreign host.
user@myhost:~>

MINA Time server started.
Message written...

参考资料:1MINA v2.0 Quick Start Guide

posted on   Phinecos(洞庭散人)  阅读(7435)  评论(5编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
历史上的今天:
2007-11-27 【译】Virtual-Machine-based Intrusion Detection on File-aware Block Level Storage

导航

统计

点击右上角即可分享
微信分享提示