MINA框架的搭建主要的类与发法
来源:互联网 发布:对网络攻防技术的认识 编辑:程序博客网 时间:2024/06/11 02:48
最近在学习MINA框架,所以整理了下
NioSocketConnector用于创建客户端连接;
IoSession用来保存会话属性和发送消息;
IoHandlerAdapter用于定义业务逻辑,常用的方法有:
sessionCreated() 当会话创建时被触发;
sessionOpened() 当会话开始时被触发;
sessionClosed() 当会话关闭时被触发;
sessionIdle() 当会话空闲时被触发;
exceptionCaught() 当接口中其他方法抛出异常未被捕获时触发此方法;
messageReceived() 当接收到消息后被触发;
注:MINA框架中的主要类
NioSocketAcceptor用于创建服务端监听;NioSocketConnector用于创建客户端连接;
IoSession用来保存会话属性和发送消息;
IoHandlerAdapter用于定义业务逻辑,常用的方法有:
sessionCreated() 当会话创建时被触发;
sessionOpened() 当会话开始时被触发;
sessionClosed() 当会话关闭时被触发;
sessionIdle() 当会话空闲时被触发;
exceptionCaught() 当接口中其他方法抛出异常未被捕获时触发此方法;
messageReceived() 当接收到消息后被触发;
messageSent() 当发送消息后被触发;
使用的架包分别是:mina-core-2.0.9.jar 、 slf4j-simple-1.7.12.jar、slf4j-api-1.7.12.jar
创一个连接服务器的类 CreateMinaServer
package mina.demo;import org.apache.mina.core.service.IoHandlerAdapter;import org.apache.mina.core.session.IdleStatus;import org.apache.mina.core.session.IoSession;//传输数据类public class CreateMinaServer extends IoHandlerAdapter {private int count = 0; //记录客户端的连接次数//当一个新客户端连接时触发该方法public void sessionCreated(IoSession ioSession){System.out.println("\n新客服端连接了");}//当一个客户端连接时public void sessionOpened(IoSession ioSession) throws Exception{count ++;System.out.println("\n第"+ count +"个客户端登录!address:"+ ioSession.getRemoteAddress());}//当客户端发送的消息到达时public void meassageReceived(IoSession session, Object message){User user = (User)message;System.out.println("\n"+user.getName());user.setName("张无忌");session.write(user);}//当信息传达到客户端时触发该方法public void messageSent(IoSession session,Object message){System.out.println("\n信息已传送到客户端。");}//当客户端关闭时public void sessionClosed(IoSession session){System.out.println("\n客户端已关闭。");} // 当连接空闲时触发此方法public void sessionIdle(IoSession session,IdleStatus status){System.out.println("连接空闲。");}// 当接口中其他方法抛出异常未被捕获时触发此方法@Overridepublic void exceptionCaught(IoSession session, Throwable cause)throws Exception {System.out.println("其他方法抛出异常。");}}测试类 TestMina
package mina.demo.test;import java.io.IOException;import java.net.InetSocketAddress;import mina.demo.CreateMinaServer;import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;import org.apache.mina.filter.codec.ProtocolCodecFilter;import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;import org.apache.mina.filter.codec.textline.TextLineCodecFactory;import org.apache.mina.transport.socket.SocketAcceptor;import org.apache.mina.transport.socket.nio.NioSocketAcceptor;public class TestMina {/** * @param args */public static void main(String[] args) {//创建一个非阻塞的服务器端(Server)的槽(Socket),用NIOSocketAcceptor acceptor = new NioSocketAcceptor();//创建接受数据的过滤器DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();//设定过滤器一行行(/r/n)的读取数据chain.addLast("mychin", new ProtocolCodecFilter(new TextLineCodecFactory() )); //假设这个过滤器将以对象的单位读取数据ProtocolCodecFilter filter = new ProtocolCodecFilter (new ObjectSerializationCodecFactory());chain.addLast("objectFilter", filter);//设定服务器消息处理器acceptor.setHandler(new CreateMinaServer());//绑定服务器的端口int port = 1010;/*//绑定端口号,启动服务器try {acceptor.bind(new InetSocketAddress(port));} catch (IOException e) {System.out.println("启动服务器错误:" + port);e.printStackTrace();}*///关闭服务器acceptor.dispose(true);if(acceptor.isDisposed()){System.out.println("关闭服务器成功!");}//System.out.println("启动服务器成功:" + port);}}
0 0
- MINA框架的搭建主要的类与发法
- 搭建Apache Mina框架并实现Server与Client端的简单消息传递
- 搭建Apache Mina框架并实现Server与Client端的简单消息传递
- Mina框架的使用
- Mina框架的使用
- mina 框架java服务端的搭建和通信
- mina 框架java服务端的搭建和通信。
- mina 框架java服务端的搭建和通信。
- mina 框架java服务端的搭建和通信。
- MIna学习 连接类的整体框架
- MINA框架 中JAVA NIO处理主要逻辑的processor线程
- 【Apache Mina2.0开发之一】搭建Apache Mina框架并实现Server与Client端的简单消息传递!
- 【Apache Mina2.0开发之一】搭建Apache Mina框架并实现Server与Client端的简单消息传递!
- 【Apache Mina2.0开发之一】搭建Apache Mina框架并实现Server与Client端的简单消息传递!
- 【Apache Mina2.0开发之一】搭建Apache Mina框架并实现Server与Client端的简单消息传递!
- 【APACHE MINA2.0开发之一】搭建APACHE MINA框架并实现SERVER与CLIENT端的简单消息传递!
- SSH框架主要的类
- 关于cocos2dx 使用BSDSocket 与 Mina框架通信的问题
- PAT.Advanced.P1068
- window.showModalDialog以及window.open用法简介
- Android r文件丢失的解决办法
- 科研项目之经验之谈
- pl/sql_1_结构
- MINA框架的搭建主要的类与发法
- Python Tkinter Grid简明彻底理解
- Windows 7下安装MongoDB
- leetcode第136题-Single Number
- spark安装和试用入门
- HTML5中meta属性的使用详解之声明
- JAVA字符串格式化-String.format()的使用
- tlb、tlh和tli文件的关系
- swiper实现触摸滑动