解决方案 »

  1.   


    import com.sun.swing.internal.plaf.metal.resources.metal;
    import com.sun.swing.internal.plaf.metal.resources.metal_sv;
    import org.apache.mina.core.RuntimeIoException;
    import org.apache.mina.core.future.ConnectFuture;
    import org.apache.mina.core.service.IoHandlerAdapter;
    import org.apache.mina.core.session.IdleStatus;
    import org.apache.mina.core.session.IoSession;
    import org.apache.mina.filter.codec.ProtocolCodecFilter;
    import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
    import org.apache.mina.transport.socket.SocketConnector;
    import org.apache.mina.transport.socket.nio.NioSocketConnector;import java.net.ConnectException;
    import java.net.InetSocketAddress;public class MinaClient {
        public SocketConnector socketConnector;    public static final int DEFAULT_CONNECT_TIMEOUT = 5;    public static final String HOST = "192.168.0.100";    public static final int PORT = 1100;    public static IoSession ioSession;    public MinaClient() {
            init();
        }    public void init() {
            socketConnector = new NioSocketConnector();        // 
            socketConnector.getSessionConfig().setKeepAlive(true);        socketConnector.setConnectTimeoutMillis(DEFAULT_CONNECT_TIMEOUT * 1000);        socketConnector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory()));        ClientIoHandler ioHandler = new ClientIoHandler();
            socketConnector.setHandler(ioHandler);
            InetSocketAddress addr = new InetSocketAddress(HOST, PORT);
            ConnectFuture cf = socketConnector.connect(addr);
            cf.awaitUninterruptibly();
            ioSession = cf.getSession();
        }    public void sendMessage(final String msg) {
            try {
                if (ioSession != null) {
                    if (ioSession.isConnected()) {//
                        ioSession.write(msg);//
                        System.out.println("send message " + msg);
                    } else {
                        reconnect();
                    }
                }        } catch (RuntimeIoException e) {
                e.printStackTrace();
            }
        }    private void reconnect() {
            InetSocketAddress addr = new InetSocketAddress(HOST, PORT);
            ConnectFuture cf = socketConnector.connect(addr);
            cf.awaitUninterruptibly();
            ioSession = cf.getSession();
        }    public static void main(String[] args) throws InterruptedException {
            MinaClient clent = new MinaClient();
            for (int i = 0; i < 99999; i++) {
                Thread.sleep(2000);
                System.err.println(i);
                clent.sendMessage("Hello World " + i);
            }
            clent.getSocketConnector().dispose();    }    public SocketConnector getSocketConnector() {
            return socketConnector;
        }    public void setSocketConnector(SocketConnector socketConnector) {
            this.socketConnector = socketConnector;
        }
    }class ClientIoHandler extends IoHandlerAdapter {    private void releaseSession(IoSession session) throws Exception {
            System.out.println("releaseSession");
            if (session.isConnected()) {
                session.close(true);
            }
        }    @Override
        public void sessionOpened(IoSession session) throws Exception {
            System.out.println("sessionOpened");
        }    @Override
        public void sessionClosed(IoSession session) throws Exception {
            System.out.println("sessionClosed-c");
        }    @Override
        public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
            System.out.println("sessionIdle");
            try {
                releaseSession(session);
            } catch (RuntimeIoException e) {
            }
        }    @Override
        public void messageReceived(IoSession session, Object message) throws Exception {
            System.out.println("Receive Server message " + message);    }    @Override
        public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
            System.out.println("exceptionCaught");
            cause.printStackTrace();
            releaseSession(session);
        }    @Override
        public void messageSent(IoSession session, Object message) throws Exception {
            System.out.println("messageSent");
            super.messageSent(session, message);
        }}
    [/code]
    import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
    import org.apache.mina.core.service.IoHandlerAdapter;
    import org.apache.mina.core.session.IdleStatus;
    import org.apache.mina.core.session.IoSession;
    import org.apache.mina.filter.codec.ProtocolCodecFilter;
    import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
    import org.apache.mina.transport.socket.SocketAcceptor;
    import org.apache.mina.transport.socket.nio.NioSocketAcceptor;import java.net.InetSocketAddress;public class MinaServer {    public void init() throws Exception{
            SocketAcceptor acceptor = new NioSocketAcceptor(Runtime.getRuntime().availableProcessors() + 1);
            //设置解析器
            DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
            chain.addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory()));        acceptor.setHandler(new BexnHandler());
            acceptor.bind(new InetSocketAddress(1100));
            acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE,5);    }
        public MinaServer() throws Exception {
            init();
        }    public static void main(String[] args) throws Exception {
            new MinaServer();
            System.out.println("Server start");
        }
    }class BexnHandler extends IoHandlerAdapter {
        @Override
        public void messageReceived(IoSession session, Object message) throws Exception {
            System.out.println("messageReceived " + message);
            super.messageReceived(session, message);
            session.write("messageReceived "+message);    }    @Override
        public void exceptionCaught(IoSession session, Throwable cause)
                throws Exception {
            if (session.isConnected()) {
                session.close(true);
            }
        }    @Override
        public void messageSent(IoSession session, Object message) throws Exception {
    //        session.close();
        }    @Override
        public void sessionClosed(IoSession session) throws Exception {
            super.sessionClosed(session);
            System.out.println("sessionClosed-s");
        }    @Override
        public void sessionCreated(IoSession session) throws Exception {
        }    @Override
        public void sessionIdle(IoSession session, IdleStatus status)
                throws Exception {
            session.close(true);
        }    @Override
        public void sessionOpened(IoSession session) throws Exception {
            super.sessionOpened(session);
        }
    }
     
      

  2.   

    气死了,,,这个什么情况,csdn搞什么,哪有那么多非法字符
      

  3.   

    搞了半天终于发出来了,请大家到这个链接:http://bbs.csdn.net/topics/390769125