Mina小例子

來源:互聯網
上載者:User

標籤:style   blog   http   color   os   io   java   ar   for   

  此例子解決了中文亂碼問題。

客服端:

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個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.