夢幻之旅

          DEBUG - 天道酬勤

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks
          1.server
          package server;

          import java.net.InetSocketAddress;

          import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
          import org.apache.mina.core.session.IdleStatus;
          import org.apache.mina.filter.codec.ProtocolCodecFilter;
          import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
          import org.apache.mina.transport.socket.SocketAcceptor;
          import org.apache.mina.transport.socket.nio.NioSocketAcceptor;

          public class MainServer
          {
              
          private static MainServer mainServer = new MainServer();
              
              
          private SocketAcceptor acceptor;
              
              
          private int bindPort = 8888;
              
              
          public static MainServer getInstances()
              
          {
                  
          return mainServer;
              }

              
              
          private MainServer()
              
          {
                  
          this.init();
              }

              
              
          private void init()
              
          {
                  
          try
                  
          {
                      acceptor 
          = new NioSocketAcceptor();
                      acceptor.getSessionConfig().setReadBufferSize(
          2048*3);
                      acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 
          10);
                      DefaultIoFilterChainBuilder chain 
          = acceptor.getFilterChain();
                      chain.addLast(
          "myChain",new ProtocolCodecFilter(new ObjectSerializationCodecFactory())); 
                      acceptor.setHandler(ServerHandler.getInstances());
                      acceptor.bind(
          new InetSocketAddress(bindPort));
                  }

                  
          catch (Exception ex)
                  
          {
                      ex.printStackTrace();
                  }

              }

              
              
          public void shutDown()
              
          {
                  acceptor.dispose();
              }

              
              
          public static void main(String[] args) throws Exception
              
          {
                  MainServer.getInstances();
              }

          }



          2.handler

          package server;

          import org.apache.mina.core.filterchain.IoFilterAdapter;
          import org.apache.mina.core.service.IoHandler;
          import org.apache.mina.core.session.IdleStatus;
          import org.apache.mina.core.session.IoSession;
          import org.apache.mina.transport.socket.SocketSessionConfig;

          public class ServerHandler extends IoFilterAdapter implements IoHandler
          {
              
          private static ServerHandler samplMinaServerHandler = new ServerHandler();
              
              
          public static ServerHandler getInstances()
              
          {
                  
          return samplMinaServerHandler;
              }

              
              
          private ServerHandler()
              
          {}
              
              
          public void sessionOpened(IoSession session) throws Exception
              
          {
                  System.out.println(
          "連接找開");
              }

              
              
          public void sessionClosed(IoSession session)
              
          {
                  session.close(
          true);
                  System.out.println(
          "關閉");
              }

              
              
          public void messageReceived(IoSession session, Object message)
                      
          throws Exception
              
          {
                  String msg 
          = (String) message;
                  System.out.println(
          "收到的信息長度" + msg.length());
                  session.write(
          "echo");
              }

              
              
          public void exceptionCaught(IoSession session, Throwable arg1)
                      
          throws Exception
              
          {
                  session.close(
          true);
              }

              
              
          public void messageSent(IoSession arg0, Object arg1) throws Exception
              
          {
                  
          //System.out.println(arg1);
              }

              
              
          public void sessionCreated(IoSession session) throws Exception
              
          {
                  SocketSessionConfig cfg 
          = (SocketSessionConfig) session.getConfig();
                  cfg.setReceiveBufferSize(
          2 * 1024 * 1024);
                  cfg.setReadBufferSize(
          2 * 1024 * 1024);
                  cfg.setKeepAlive(
          true);
                  cfg.setSoLinger(
          0);
              }

              
              
          public void sessionIdle(IoSession arg0, IdleStatus arg1) throws Exception
              
          {}
          }

          3.client
          package client;

          import java.net.InetSocketAddress;

          import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
          import org.apache.mina.core.future.ConnectFuture;
          import org.apache.mina.filter.codec.ProtocolCodecFilter;
          import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
          import org.apache.mina.transport.socket.nio.NioSocketConnector;

          public class MsgSender
          {
              
          private static MsgSender msgSender = new MsgSender();
              
              NioSocketConnector connector;
              
              DefaultIoFilterChainBuilder chain;
              
              
          public static MsgSender getInstances()
              
          {
                  
          return msgSender;
              }

              
              
          private MsgSender()
              
          {
                  connector 
          = new NioSocketConnector();
                  chain 
          = connector.getFilterChain();
                  chain.addLast(
          "myChain",new ProtocolCodecFilter(new ObjectSerializationCodecFactory())); 
                  connector.setHandler(ClientHandler.getInstances());
                  connector.setConnectTimeoutMillis(
          1000);
              }

              
              
          public void sendMsg(String host, int port, String msg)
              
          {
                  
          //chain.addLast("codec", new ProtocolCodecFilter( new TextLineCodecFactory()));
                  ConnectFuture cf = connector.connect(new InetSocketAddress(host, port));
                  cf.awaitUninterruptibly();
                  
          try
                  
          {
                     cf.getSession().write(msg);
                  }

                  
          catch (Exception ex)
                  
          {
                      ex.printStackTrace();
                  }

                  cf.getSession().getCloseFuture().awaitUninterruptibly();
              }

              
              
          public void shutDown()
              
          {
                  connector.dispose();
              }

              
              
          public static void main(String args[])
              
          {
                  StringBuffer s 
          = new StringBuffer();
                  
          for(int i=0;i<100;i++)
                  
          {
                      s.append(i);
                  }

                  
          for(int i=0;i<200;i++)
                  
          {
                      MsgSender.getInstances().sendMsg(
          "127.0.0.1"8888, s.toString());
                  }

              }

          }


          4.handler
          package client;

          import org.apache.mina.core.service.IoHandlerAdapter;
          import org.apache.mina.core.session.IoSession;

          public class ClientHandler extends IoHandlerAdapter
          {
              
          private static ClientHandler samplMinaClientHandler = new ClientHandler();
              
              
          public static ClientHandler getInstances()
              
          {
                  
          return samplMinaClientHandler;
              }

              
              
          private ClientHandler()
              
          {
              }

              
              
          public void sessionOpened(IoSession session) throws Exception
              
          {
              }

              
              
          public void sessionClosed(IoSession session)
              
          {}
              
              
          public void messageReceived(IoSession session, Object message)
                      
          throws Exception
              
          {
                  System.out.println(
          "收到到消息" + (String) message);
                  session.close(
          true);
              }

              
              
          public void messageSent(IoSession arg0, Object arg1) throws Exception
              
          {
                  
          //System.out.println(arg1);
              }

              
              
          public void exceptionCaught(IoSession session, Throwable cause) throws Exception
              
          {
                  session.close(
          true);
              }

          }

          posted on 2011-08-30 13:11 HUIKK 閱讀(1254) 評論(0)  編輯  收藏 所屬分類: Javajava Net
          主站蜘蛛池模板: 金塔县| 辉南县| 双牌县| 岳西县| 宜城市| 太谷县| 绥德县| 灵石县| 双牌县| 凉城县| 揭东县| 隆德县| 葫芦岛市| 华坪县| 台中市| 射阳县| 巩义市| 祁阳县| 光山县| 丹巴县| 晋江市| 密云县| 新竹县| 双桥区| 葫芦岛市| 鹿泉市| 简阳市| 建德市| 富源县| 静海县| 宣恩县| 蛟河市| 中牟县| 镇宁| 佛冈县| 杂多县| 天镇县| 永顺县| 林周县| 尼玛县| 基隆市|