Socket网络编程-Mina 实例

第一步: Mina服务端 Server 的创建

 

public class MinaServer {
 public static final int PORT = 1989;
 
 private static final Logger logger = Logger.getLogger(MinaServer.class);
 public static void main(String[] args) {
  IoAcceptor ioAcceptor = null;
  try {
   //创建一个非阻塞 的Server端Socket
   ioAcceptor = new NioSocketAcceptor();
   //
   ioAcceptor.getFilterChain().addLast(
     "codec",
     new ProtocolCodecFilter(new TextLineCodecFactory(Charset
       .forName("UTF-8"),LineDelimiter.WINDOWS.getValue(),LineDelimiter.WINDOWS.getValue())));
   
   //设置读取数据的缓冲区大小
   ioAcceptor.getSessionConfig().setReadBufferSize(4096);
   //设置10秒没有任何操作进入空闲状态
   
   ioAcceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
   
   //设置业务逻辑处理程序
   ioAcceptor.setHandler(new DefaultServerHander());
   
   ioAcceptor.bind(new InetSocketAddress(PORT));
   
   logger.info("在端口" + PORT + "启动Mina监听程序成功");
   
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
  
 }
}

 

第二部: 创建Mina服务端处理程序

 

  

public class MinaServer {
 public static final int PORT = 1989;
 
 private static final Logger logger = Logger.getLogger(MinaServer.class);
 public static void main(String[] args) {
  IoAcceptor ioAcceptor = null;
  try {
   //创建一个非阻塞 的Server端Socket
   ioAcceptor = new NioSocketAcceptor();
   //
   ioAcceptor.getFilterChain().addLast(
     "codec",
     new ProtocolCodecFilter(new TextLineCodecFactory(Charset
       .forName("UTF-8"),LineDelimiter.WINDOWS.getValue(),LineDelimiter.WINDOWS.getValue())));
   
   //设置读取数据的缓冲区大小
   ioAcceptor.getSessionConfig().setReadBufferSize(4096);
   //设置10秒没有任何操作进入空闲状态
   
   ioAcceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
   
   //设置业务逻辑处理程序
   ioAcceptor.setHandler(new DefaultServerHander());
   
   ioAcceptor.bind(new InetSocketAddress(PORT));
   
   logger.info("在端口" + PORT + "启动Mina监听程序成功");
   
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
}
 

 

 

第三部:客户端连接程序代码

 

public class MinaClient {
 private static final int PORT = 1989;
 private static final String Host = "localhost";
 public static void main(String[] args) {
  
  // 创建一个非阻塞的客户端连接
  IoConnector connector = new  NioSocketConnector();
  
  connector.getFilterChain().addLast(
    "codec",
    new ProtocolCodecFilter(new TextLineCodecFactory(Charset
      .forName("UTF-8"),LineDelimiter.WINDOWS.getValue(),LineDelimiter.WINDOWS.getValue())));
  
  
  connector.setHandler(new MinaClientHander());
  
  ConnectFuture connectFuture = connector.connect(new InetSocketAddress(Host, PORT));
  
  connectFuture.awaitUninterruptibly(); //等待连接创建完成
  
  IoSession session  = connectFuture.getSession();
  
  session.write("高江涛");
  
  session.getCloseFuture().awaitUninterruptibly(); //等待连接断开
  connector.dispose();
  
 }
}


 

第四步: 客户端处理程序

public class MinaClientHander extends IoHandlerAdapter {
 @Override
 public void exceptionCaught(IoSession session, Throwable cause)
   throws Exception {
  // TODO Auto-generated method stub
  super.exceptionCaught(session, cause);
 }
 @Override
 public void messageReceived(IoSession session, Object message)
   throws Exception {
  // TODO Auto-generated method stub
  super.messageReceived(session, message);
 }
 @Override
 public void messageSent(IoSession session, Object message) throws Exception {
  // TODO Auto-generated method stub
  super.messageSent(session, message);
 }
 @Override
 public void sessionClosed(IoSession session) throws Exception {
  // TODO Auto-generated method stub
  super.sessionClosed(session);
 }
 @Override
 public void sessionCreated(IoSession session) throws Exception {
  // TODO Auto-generated method stub
  super.sessionCreated(session);
 }
 @Override
 public void sessionIdle(IoSession session, IdleStatus status)
   throws Exception {
  // TODO Auto-generated method stub
  super.sessionIdle(session, status);
 }
 @Override
 public void sessionOpened(IoSession session) throws Exception {
  // TODO Auto-generated method stub
  super.sessionOpened(session);
 } 
}


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值