一、学习文档:http://www.open-open.com/doc/view/1d86422753374cbf9b104665137e69d0
http://www.cnblogs.com/xuekyo/archive/2013/03/06/2945826.html
二、介绍:高性能高扩展网络应用框架,提供了抽象的、事件驱动异步的API
应用场景:
三、JAR包:
mina-core-2.0.4.jar、
slf4j-api-1.5.8.jar、
slf4j-log4j12-1.5.8.jar、
log4j-1.2.14.jar
四、流程:
IoAcceptor(Server)------connector(Client)
| |
IoFilter IoFilter
| |
Handler Handler
五、Server端:
(1)IoHandler
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
public class Minaserverhandler extends IoHandlerAdapter{
@Override
public void sessionCreated(IoSession session) throws Exception {
System.out.println("session: "+session.getRemoteAddress().toString());
}
@Override
public void exceptionCaught(IoSession session, Throwable cause)
throws Exception {
cause.printStackTrace();
}
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
if(message.toString().trim().equalsIgnoreCase("quit")){
session.close(true);
return;
}
System.out.println("Received: "+message.toString());
//messageSent(session,"Hi,Client!");
session.write("Hi,Client!");
}
@Override
public void sessionIdle(IoSession session, IdleStatus status)
throws Exception {
System.out.println("IDLE:"+session.getIdleCount(status));
}
}
(2)IoServer
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 MinaServer {
private static final int PORT = 6488;
public static void main(String[] args) {
//创建服务器监控线程
IoAcceptor acceptor = new NioSocketAcceptor();
acceptor.getSessionConfig().setReadBufferSize(2048);
acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
//System.out.println("IdleStatus:"+IdleStatus.BOTH_IDLE);
//设置日志记录器
acceptor.getFilterChain().addLast("logger", new LoggingFilter());
//设置编码过滤器
acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(
(new TextLineCodecFactory(Charset.forName("UTF8")))));
//业务处理逻辑
acceptor.setHandler(new Minaserverhandler());
//设置端口、启动监听线程
try {
acceptor.bind(new InetSocketAddress(PORT));
//acceptor.bind();
} catch (IOException e) {
e.printStackTrace();
}
}
}
二、Client端:
(1)IoHandler
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
public class MinaClientHandler extends IoHandlerAdapter{
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
System.out.println("Received: "+message.toString());
}
@Override
public void messageSent(IoSession session, Object message) throws Exception {
System.out.println("SENT: "+message.toString());
}
}
(2)IoClient
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import org.apache.mina.core.future.ConnectFuture;
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.NioSocketConnector;
public class MinaClient {
private static final int PORT= 6488;
private static final String IP = "127.0.0.1";
public static void main(String[] args) {
//创建客户端连接
NioSocketConnector connector = new NioSocketConnector();
connector.getFilterChain().addLast("logger", new LoggingFilter());
connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(
new TextLineCodecFactory(Charset.forName("UTF-8"))));
//连接超时检查时间
connector.setConnectTimeoutCheckInterval(30);
connector.setHandler(new MinaClientHandler());
//建立连接
ConnectFuture cf = connector.connect(new InetSocketAddress(IP,PORT));
//等待创建完成
cf.awaitUninterruptibly();
cf.getSession().write("MO@LO&USERID=cheshi");
//cf.getSession().write("quit");
//等待连接断开
cf.getSession().getCloseFuture().awaitUninterruptibly();
//释放连接
connector.dispose();
}
}
Mina框架+常用JAR包
1星 需积分: 50 146 浏览量
2017-09-07
10:33:02
上传
评论 1
收藏 902KB RAR 举报
hngapl
- 粉丝: 0
- 资源: 4
最新资源
- 探索tecreate:软件开发的未来之星.zip
- 打标机项目C#源码连接扫码
- 基于SSM的房屋租赁系统的设计与实现
- xyctf:从入门到精通的实用指南.zip
- mmqrcode1714153659780.png
- Screenshot_2024-04-27-06-08-58-486_com.baidu.xin.aiqicha.jpg
- 基于Javaweb+Tomcat+MySQL的大学生公寓管理系统+sql文件.zip
- 实训作业基于javaweb的订单管理系统源码+数据库+实训报告.zip
- 多机调度问题贪心算法基于最小堆和贪心算法求解多机调度问题.zip
- 基于同态加密技术的匿名电子投票系统源码.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈