Mina的执行流程代码
IOAcceptor用于服务器端,绑定接口,添加Filter和Handler进行数据的处理!!!
package application.service;
import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
public class MinaServer {
public static void main(String[] args) throws IOException {
IoAcceptor ioAcceptor = new NioSocketAcceptor();
ioAcceptor.getFilterChain()
.addLast("encodingFilter",
new ProtocolCodecFilter(new TextLineCodecFactory(Charset
.forName("UTF-8"))));
ioAcceptor.getFilterChain().addLast("IOFilter",new IOServerFilter());
ioAcceptor.setHandler(new IOServerHandler());
ioAcceptor.bind(new InetSocketAddress(8000));
System.out.println("mina server started!!!");
}
}
服务器端的IOFilter:
package application.service;
import org.apache.mina.core.filterchain.IoFilterAdapter;
import org.apache.mina.core.session.IoSession;
public class IOServerFilter extends IoFilterAdapter {
@Override
public void sessionCreated(NextFilter nextFilter, IoSession session) throws Exception {
System.out.println("server filter session created");
session.write("message create bty server : 你好,世界!!!");
super.sessionCreated(nextFilter, session);
}
@Override
public void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception {
System.out.println("server filter messageReceived :" + message);
super.messageReceived(nextFilter, session, message);
}
}
服务器端的IOHandler:
package application.service;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
public class IOServerHandler extends IoHandlerAdapter {
@Override
public void messageReceived(IoSession session, Object message) throws Exception {
System.out.println("server handler messageReceived:"+ message);
super.messageReceived(session, message);
}
@Override
public void sessionCreated(IoSession session) throws Exception {
System.out.println("server handler session created");
super.sessionCreated(session);
}
}
IOConnector用于客户端,连接服务器ip和端口,添加Filter和Handler进行数据的处理!!!
package application.service;
import org.apache.mina.core.service.IoConnector;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
public class MinaClient {
public static void main(String[] args) {
IoConnector ioConnector = new NioSocketConnector();
ioConnector.getFilterChain()
.addLast("encodingFilter",
new ProtocolCodecFilter(new TextLineCodecFactory(Charset
.forName("UTF-8"))));
ioConnector.getFilterChain()
.addLast("clientFilter",new IOClientFilter());
ioConnector.setHandler(new IOClientHandler());
ioConnector.connect(new InetSocketAddress(8000));
}
}
客户端的IOFilter:
package application.service;
import org.apache.mina.core.filterchain.IoFilterAdapter;
import org.apache.mina.core.session.IoSession;
public class IOClientFilter extends IoFilterAdapter {
@Override
public void sessionCreated(NextFilter nextFilter, IoSession session) throws Exception {
System.out.println("client filter session created");
session.write("message from client : hello,world!!!");
super.sessionCreated(nextFilter, session);
}
@Override
public void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception {
System.out.println("client filter messageReceived:"+message);
super.messageReceived(nextFilter, session, message);
}
}
客户端的IOHandler:
package application.service;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
public class IOClientHandler extends IoHandlerAdapter {
@Override
public void messageReceived(IoSession session, Object message) throws Exception {
System.out.println("client handler messageReceived:"+ message);
super.messageReceived(session, message);
}
@Override
public void sessionCreated(IoSession session) throws Exception {
System.out.println("client session created");
super.sessionCreated(session);
}
}