发布时间:2014-09-14 16:50:55
mina为每个session映射到一个NioProcessor,NioProcessor是一个IO处理机,会开启一个线程Processor,也持有一个专门的Selector,将其拥有的Session的OP_READ注册到该Selector上。因为read返回-1表示断开连接,所以这里也需要处理断开事件。代码跟踪如下:点击(此处)折叠或打开private.........【阅读全文】
发布时间:2014-09-14 14:18:37
总的来说,在Acceptor线程的Selector收到OP_ACCEPT事件后,会创建一个NioSession,一个Session表示一个连接。之后它会选择一个NioProcessor处理读写事件。NioProcessor可表示一个IO处理机,用于处理read跟write事件。Mina启动时会创建一个包含ncpus+1个NioProcessor对象的对象池,每个NioProcessor会启动一个Processo.........【阅读全文】
发布时间:2014-09-13 20:50:15
在NIO中,通过serversocket的bind函数将channel与socket地址绑定,最后将该channel的op_accept注册到selector中,算是可以接受客户端的连接了。在MINA中,对op_accept事件使用单独一个selector,并可以监听多个channle的op_accept事件。对已经绑定过的SocketAddress,MINA并不检查,若已经绑定过,则会抛出已绑定的.........【阅读全文】
发布时间:2014-09-12 11:24:12
TCP采用停止等待协议来避免数据在传输过程中丢失,一般的停止等待协议要求发送方在收到之前发送的数据后再发送剩余数据,为了提高数据发送的效率,TCP采用了一种累积确认的方式,这个协议为滑动窗口协议。由于网络双方的网速不尽相同,比如快的发送跟慢的接受,将导致接受服务器的接受缓冲区一直被填满,使得接受服.........【阅读全文】
发布时间:2014-09-11 21:13:26
在MINA中提供了ProtocolEncoder跟ProtocolDecoder两个接口来提供编码跟解码方法。另外提供ProtocolCodecFactory接口来返回这两个接口的实现类。所以在mina中实现编解码功能,必须实现这3个接口。 虽然真正的编解码算法随应用各部相同,但如何使用这些算法进行数据解析的过程却是相当一致的。所以通过模板设计.........【阅读全文】