mina
jzq114
这个作者很懒,什么都没留下…
展开
-
mina源码学习之IoSession
Acceptor线程接收到客户端的请求之后就会调用processHandles方法处理请求。 private void processHandles(Iterator<H> handles) throws Exception { while (handles.hasNext()) { H handle = handles.next();原创 2016-09-08 21:45:31 · 845 阅读 · 0 评论 -
mina源码学习
Apache mina是一个网络通信应用框架,它主要是对基于TCP/IP,UDP/IP协议栈的通信框架。使用mina框架可以快速开发高性能,高扩展的网络通信应用,mina提供了事件驱动,异步操作的编程模型。mina框架有1.x和2.x两个版本,此处阅读的是2.x版本,在阅读源码之前需要掌握I/O,NIO,Socket,多线程及java并发库相关的内容。 mina同时提供了网络通信服务端和客户端的封原创 2016-09-05 16:22:58 · 420 阅读 · 0 评论 -
mina源码阅读之过滤器
mina中的过滤器用IoFilter接口表示,默认实现类为IoFilterAdapter,IoFilter中包含了一个NextFilter接口,用于指向下一个过滤器,并且接口中定义的方法名与IoFilter接口中的一致。如果要实现自定义的过滤器,只需实现IoFilter接口即可,如果只是关注其中某几个方法,可以继承IoFilterAdapter类,重写相应的方法。注意,如果想让自定义的过滤器执行完之原创 2016-09-18 21:51:18 · 813 阅读 · 0 评论 -
mina源码学习之创建IoAcceptor
mina服务端通信概括起来有如下几个过程,1、创建服务端接收器对象IoAcceptor。2、绑定相应的接口并启动接收请求的线程。3、接收到请求后读取socket信息并调用过滤器解析socket信息。5、处理请求并将处理结果使用异步的方式写回客户端。 那么我们先来看看mina创建接收器对象的过程。在mina框架中,接收器对象用IoAcceptor接口表示,其TCP协议实现类为NioSocketAc原创 2016-09-05 22:02:23 · 682 阅读 · 0 评论 -
mina源码阅读之编码与解码
TCP是一个流协议,所谓流协议就是没有界限的一串数据,数据之间并没有分界线,它会根据TCP缓冲区的实际大小进行包的划分,那么业务上的一个完整包可能会被TCP拆成多个包进行发送,也有可能把多个小的包封装成一个大包进行发送,这时候就可能发生拆包与粘包。对于接收端来说,由于数据并没有界限,接收端不知道到底什么时候数据算是读取完,也只能根据缓冲区的大小来进行包的划分,此时接收端也可能会发生拆包与粘包。 针原创 2016-09-22 23:29:32 · 672 阅读 · 0 评论 -
mina源码学习之接收线程
创建完接收器IoAcceptor之后,紧接着就是启动服务端的监听,准备接受客户端的请求。启动监听的入口是IoAcceptor接口的bind方法,方法的实现在AbstractIoAcceptor类中,具体的逻辑处理是AbstractPollingIoAcceptor类的bindInternal方法。我们重点看下bindInternal方法中调用startupAcceptor方法启动接收请求线程的过程。原创 2016-09-07 11:02:41 · 544 阅读 · 0 评论