java通信框架mina的使用
2016-09-16 20:46
423 查看
什么事mina?
mina是基于nio开发出来的一个无阻塞高性能通信框架,能够处理socket无法解决的高并发问题。
mina的下载
http://mina.apache.org/
.将下载好的压缩包进行解压,将dist文件夹下的mina-core-2.0.14.jar文件和lib文件下slf4j-api-1.7.21.jar文件导入到你的web项目中
package com.example.server;
import java.io.IOException;
import java.net.InetSocketAddress;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
public class MinaServer {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
//第一步 创建一个NioSocketAcceptor 对象
NioSocketAcceptor acceptor=new NioSocketAcceptor();
//第二步设置handler
acceptor.setHandler(new MyServerHandler());
//第三步,获取拦截器,发来的消息都需要通过拦截器拦截之后才能接收到
//添加一个拦截器对数据进行加解码TextLineCodecFactory()
acceptor.getFilterChain().addLast("codeFilter"
,new ProtocolCodecFilter(new TextLineCodecFactory()));;
//第四步,绑定端口号
acceptor.bind(new InetSocketAddress(9898));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
handler对象
package com.example.server;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
public class MyServerHandler extends IoHandlerAdapter {
//异常的处理
@Override
public void exceptionCaught(IoSession session, Throwable cause)
throws Exception {
// TODO Auto-generated method stub
super.exceptionCaught(session, cause);
System.out.println("exceptionCaught");
}
@Override
public void inputClosed(IoSession session) throws Exception {
// TODO Auto-generated method stub
super.inputClosed(session);
}
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
// TODO Auto-generated method stub
super.messageReceived(session, message);
}
@Override
public void messageSent(IoSession session, Object message) throws Exception {
// TODO Auto-generated method stub
super.messageSent(session, message);
}
@Override
public void sessionClosed(IoSession session) throws Exception {
// TODO Auto-generated method stub
super.sessionClosed(session);
}
@Override
public void sessionCreated(IoSession session) throws Exception {
// TODO Auto-generated method stub
super.sessionCreated(session);
}
// 这个方法是在服务器空闲状态的时候调用的
@Override
public void sessionIdle(IoSession session, IdleStatus status)
throws Exception {
// TODO Auto-generated method stub
super.sessionIdle(session, status);
}
@Override
public void sessionOpened(IoSession session) throws Exception {
// TODO Auto-generated method stub
super.sessionOpened(session);
}
}
以上的代码基本上就可以代替原生的socket服务器端的写法了,至于接收端的用法可以用socket实现也可以用其他的方式实现
mina是基于nio开发出来的一个无阻塞高性能通信框架,能够处理socket无法解决的高并发问题。
mina的下载
http://mina.apache.org/
.将下载好的压缩包进行解压,将dist文件夹下的mina-core-2.0.14.jar文件和lib文件下slf4j-api-1.7.21.jar文件导入到你的web项目中
package com.example.server;
import java.io.IOException;
import java.net.InetSocketAddress;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
public class MinaServer {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
//第一步 创建一个NioSocketAcceptor 对象
NioSocketAcceptor acceptor=new NioSocketAcceptor();
//第二步设置handler
acceptor.setHandler(new MyServerHandler());
//第三步,获取拦截器,发来的消息都需要通过拦截器拦截之后才能接收到
//添加一个拦截器对数据进行加解码TextLineCodecFactory()
acceptor.getFilterChain().addLast("codeFilter"
,new ProtocolCodecFilter(new TextLineCodecFactory()));;
//第四步,绑定端口号
acceptor.bind(new InetSocketAddress(9898));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
handler对象
package com.example.server;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
public class MyServerHandler extends IoHandlerAdapter {
//异常的处理
@Override
public void exceptionCaught(IoSession session, Throwable cause)
throws Exception {
// TODO Auto-generated method stub
super.exceptionCaught(session, cause);
System.out.println("exceptionCaught");
}
@Override
public void inputClosed(IoSession session) throws Exception {
// TODO Auto-generated method stub
super.inputClosed(session);
}
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
// TODO Auto-generated method stub
super.messageReceived(session, message);
}
@Override
public void messageSent(IoSession session, Object message) throws Exception {
// TODO Auto-generated method stub
super.messageSent(session, message);
}
@Override
public void sessionClosed(IoSession session) throws Exception {
// TODO Auto-generated method stub
super.sessionClosed(session);
}
@Override
public void sessionCreated(IoSession session) throws Exception {
// TODO Auto-generated method stub
super.sessionCreated(session);
}
// 这个方法是在服务器空闲状态的时候调用的
@Override
public void sessionIdle(IoSession session, IdleStatus status)
throws Exception {
// TODO Auto-generated method stub
super.sessionIdle(session, status);
}
@Override
public void sessionOpened(IoSession session) throws Exception {
// TODO Auto-generated method stub
super.sessionOpened(session);
}
}
以上的代码基本上就可以代替原生的socket服务器端的写法了,至于接收端的用法可以用socket实现也可以用其他的方式实现
相关文章推荐
- JAVA NIO异步通信框架MINA选型和使用的几个细节(概述入门,UDP, 心跳)
- 【socket通信框架mina使用详解】
- 【C/S通信交互之Socket篇】Cocos2dx(Client)使用BSD Socket与Mina(Server)手机网游通信框架!
- socket通信框架mina使用详解(一)
- NIO框架之MINA源码解析(五):NIO超级陷阱和使用同步IO与MINA通信
- 【C/S通信交互之Socket篇】Cocos2dx(Client)使用BSD Socket与Mina(Server)手机网游通信框架!
- 【C/S通信交互之Socket篇】Cocos2dx(Client)使用BSD Socket与Mina(Server)手机网游通信框架!
- 【C/S通信交互之Socket篇】Cocos2dx(Client)使用BSD Socket与Mina(Server)手机网游通信框架!
- mina 框架java服务端的搭建和通信
- mina 框架java服务端的搭建和通信。
- 使用Mina框架开发 QQ Android 客户端(2) 客户端与服务端的通信
- C/S通信交互之Cocos2dx使用BSD Socket与Mina手机网游通信框架
- 基于Java Mina 通信框架的JT/T809转发服务器设计
- socket通信框架mina使用详解
- JAVA NIO异步通信框架MINA选型和使用的几个细节(概述入门,UDP, 心跳)
- socket通信框架mina使用详解(一)
- 【C/S通信交互之Socket篇】Cocos2dx(Client)使用BSD Socket与Mina(Server)手机网游通信框架
- Cocos2dx(Client)使用BSD Socket与Mina(Server)手机网游通信框架!
- mina 框架java服务端的搭建和通信。
- socket通信框架mina使用详解(一)