apache mina

最近项目用到mina,所以自学了一下。趁热打铁看,记一下。mina其实我自己理解就是一个网络层的框架。他对原有的socket进行了封装,变得更加灵活,在我看来变得更加方便。最重要的是:他是异步通信的。也就是说他不会存在因为等待要接收的消息而损失资源。下面是写的服务器端的代码(PORT=9080自己定义的):

IoAcceptor acceptor = new NioSocketAcceptor();//建立接收端 也就是所謂的server端
		MinaHandler mh = new MinaHandler();
		DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
		chain.addLast("logger", new LoggingFilter());//加入一个日志过滤器,记录日志
		chain.addLast("codec", new ProtocolCodecFilter(
				new TextLineCodecFactory(Charset.forName("UTF-8"))));//加入编码格式过滤器,设定为utf-8
		IoSessionConfig dcfg = acceptor.getSessionConfig();//定义session的设置 
		dcfg.setReadBufferSize(2048);//临时读取的缓冲区大小 我是这么理解的
		acceptor.setHandler(mh);//设定业务处理的对象 大概可以这么理解 不是很准确
		acceptor.bind(new InetSocketAddress(PORT));//选择要监控的服务器 因为不监控也就没有触发方法这么一说了

然后是客户端:

	IoConnector connector = new NioSocketConnector();//建立連接端
		DefaultIoFilterChainBuilder chain = connector.getFilterChain();
		chain.addLast("logger", new LoggingFilter());//加入一个日志过滤器,记录日志
		chain.addLast("codec", new ProtocolCodecFilter(
				new TextLineCodecFactory(Charset.forName("UTF-8"))));//加入编码格式过滤器,设定为utf-8
		ClientHandler ch = new ClientHandler();//自己定义的类 实现八种方法。
		connector.setHandler(ch);//设定业务处理的对象 大概可以这么理解 不是很准确
		ConnectFuture connFuture = connector.connect(new InetSocketAddress(
				"localhost", 9089));//链接服务器  
		connFuture.awaitUninterruptibly();//线程等待,直到被唤醒
		IoSession session = connFuture.getSession();

		session.write("dddddd");//发送需要发送的内容
		session.getCloseFuture().awaitUninterruptibly();
		connector.dispose();



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值