解读NIO Socket非阻塞模式
前言:
jdk供的无阻塞I/O(NIO)有效解决了多线程服务器存在的线程开销问题,但在使用上略显得复杂一些。在NIO中使用多线程,主要目的已不是为了应对每个客户端请求而分配独立的服务线程,而是通过多线程充分使用用多个CPU的处理能力和处理中的等待时间,达到提高服务能力的目的。
这段时间在研究NIO,写篇博客来记住学过的东西。还是从最简单的Hello World开始,
client多线程请求server端,server接收client的名字,并返回Hello! +名字的字符格式给client。当然实际应用并不这么简单,实际可能是访问文件或者数据库获取信息返回给client。非阻塞的NIO有何神秘之处?代码:
1)server端代码
server主要是读取client发过来的信息,并返回一条信息
2)client端代码
#
#
# channel.write(block);
#
# //channel.close();
#
# }
# } </pre>
之前的
<pre name="code" class="java"> while (iter.hasNext()) {
SelectionKey key = (SelectionKey) iter.next();
iter.remove();
process(key);
} </pre>
?应该就已经把它remove掉了吧。<br>
</div>
<p>?</p>
<p>?</p> 26 楼 only_java 2009-09-03 发现用户NIO发数据,收到的数据是连在一起的。比如
我发两条hello world,然后在服务端接受时则是一下将两条当作一条接受了。这种问题怎么处理呢? 27 楼 Mic_X 2011-07-27 fly_hyp 写道代码质量非常高,受益匪浅
break _FOR
这质量叫高? 28 楼 lfpzln 2012-02-20 only_java 写道发现用户NIO发数据,收到的数据是连在一起的。比如
我发两条hello world,然后在服务端接受时则是一下将两条当作一条接受了。这种问题怎么处理呢?