首页 > 代码库 > Mina小例子
Mina小例子
此例子解决了中文乱码问题。
客服端:
MimaTimeClient.java
package minaExamle.client;import java.net.InetSocketAddress;import java.nio.charset.Charset;import java.util.Scanner;import minaExamle.common.BaseConfig;import org.apache.mina.core.future.ConnectFuture;import org.apache.mina.core.service.IoConnector;import org.apache.mina.core.session.IoSession;import org.apache.mina.filter.codec.ProtocolCodecFilter;import org.apache.mina.filter.codec.prefixedstring.PrefixedStringCodecFactory;import org.apache.mina.filter.logging.LoggingFilter;import org.apache.mina.transport.socket.nio.NioSocketConnector;public class MimaTimeClient { public static void main(String[] args) { IoConnector connector = new NioSocketConnector(); connector.getFilterChain().addLast( "logger", new LoggingFilter() ); connector.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new PrefixedStringCodecFactory(Charset.forName("UTF-8")))); connector.setHandler(new TimeClientHander()); ConnectFuture connectFuture = connector.connect(new InetSocketAddress("127.0.0.1",BaseConfig.PORT)); //等待建立连接 connectFuture.awaitUninterruptibly(); System.out.println("连接成功"); IoSession session = connectFuture.getSession(); Scanner sc = new Scanner(System.in); boolean quit = false; while(!quit){ String str = sc.next(); if(str.equalsIgnoreCase("quit")){ quit = true; } session.write(str); } //关闭 if(session!=null){ if(session.isConnected()){ session.getCloseFuture().awaitUninterruptibly(); } connector.dispose(true); } }}
TimeClientHander.java
package minaExamle.client;import org.apache.mina.core.service.IoHandler;import org.apache.mina.core.session.IdleStatus;import org.apache.mina.core.session.IoSession;public class TimeClientHander implements IoHandler { @Override public void exceptionCaught(IoSession arg0, Throwable arg1) throws Exception { // TODO Auto-generated method stub arg1.printStackTrace(); } @Override public void messageReceived(IoSession arg0, Object message) throws Exception { // TODO Auto-generated method stub System.out.println("client接受信息:"+message.toString()); } @Override public void messageSent(IoSession arg0, Object message) throws Exception { // TODO Auto-generated method stub System.out.println("client发送信息"+message.toString()); } @Override public void sessionClosed(IoSession session) throws Exception { // TODO Auto-generated method stub System.out.println("client与:"+session.getRemoteAddress().toString()+"断开连接"); } @Override public void sessionCreated(IoSession session) throws Exception { // TODO Auto-generated method stub System.out.println("client与:"+session.getRemoteAddress().toString()+"建立连接"); } @Override public void sessionIdle(IoSession session, IdleStatus status) throws Exception { // TODO Auto-generated method stub System.out.println( "IDLE " + session.getIdleCount( status )); } @Override public void sessionOpened(IoSession arg0) throws Exception { // TODO Auto-generated method stub System.out.println("打开连接"); }}
服务端:
MinaTimeServer.java
package minaExamle.server;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.charset.Charset;import minaExamle.common.BaseConfig;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.prefixedstring.PrefixedStringCodecFactory;import org.apache.mina.filter.logging.LoggingFilter;import org.apache.mina.transport.socket.nio.NioSocketAcceptor;public class MinaTimeServer { private static final int PORT= BaseConfig.PORT; public static void main(String[] args) throws IOException { IoAcceptor acceptor = new NioSocketAcceptor(); acceptor.getFilterChain().addLast( "logger", new LoggingFilter() ); acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new PrefixedStringCodecFactory(Charset.forName("UTF-8")))); acceptor.setHandler( new TimeServerHandler() ); acceptor.getSessionConfig().setReadBufferSize( 2048 ); acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 ); acceptor.bind(new InetSocketAddress(PORT)); }}
TimeServerHandler.java
package minaExamle.server;import java.util.Date;import org.apache.mina.core.service.IoHandler;import org.apache.mina.core.session.IdleStatus;import org.apache.mina.core.session.IoSession;public class TimeServerHandler implements IoHandler { @Override public void exceptionCaught(IoSession arg0, Throwable arg1) throws Exception { arg1.printStackTrace(); } @Override public void messageReceived(IoSession session, Object message) throws Exception { String str = message.toString(); System.out.println("接受到的消息:"+str); if( str.trim().equalsIgnoreCase("quit") ) { session.close(true); return; } Date date = new Date(); session.write( date.toString() ); System.out.println("Message written..."); } @Override public void messageSent(IoSession arg0, Object arg1) throws Exception { // TODO Auto-generated method stub System.out.println("发送信息:"+arg1.toString()); } @Override public void sessionClosed(IoSession session) throws Exception { // TODO Auto-generated method stub System.out.println("IP:"+session.getRemoteAddress().toString()+"断开连接"); } @Override public void sessionCreated(IoSession session) throws Exception { // TODO Auto-generated method stub System.out.println("IP:"+session.getRemoteAddress().toString()); } @Override public void sessionIdle(IoSession session, IdleStatus status) throws Exception { // TODO Auto-generated method stub System.out.println( "IDLE " + session.getIdleCount( status )); } @Override public void sessionOpened(IoSession arg0) throws Exception { // TODO Auto-generated method stub }}
BaseConfig.java
package minaExamle.common;public class BaseConfig { //服务器端口 public static final int PORT = 9123; }
服务端运行截图
客服端运行截图
Mina小例子
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。