在 Java的 网络编程中,问题的解决 总是从简单到困难:


      1、一开始 解决了 2个点之间的 点对点的 TCP连接;

      2、当有 多个用户访问服务器时,则使用 while循环的方式 使服务器端 可以一直连接,不断开;

      3、但是 这样做 会让用户等待 已连接的用户,当这个用户 不在连接时,才可以让其它的用户连接,此时 为了解决这个问题,则 使用了 多线程的方式 解决:只要 有1个客户连接,服务器端 就产生1个线程 连接客户,这样 客户端这边无需等待,直接连接 即可!


      4、看到这里,觉得 以上的步骤 已经非常的完美,可以 很好的解决 服务器端与客户端的连接问题!但是,问题的产生 总是 从实践中来,只有在 实践中 才会 发现很多的问题:

         当 采用 上述步骤后,确实 解决了 不少的问题,但需要注意到,当 服务器端 与 客户端 连接之后,如果客户端不输入,则服务器端 会一直等待,即不断开,也消耗 巨大的资源,这就是 IO阻塞 造成的问题!

         为了 解决上述的问题,Java 使用了 新IO(即NIO),使用 其中的 Selector类 可以使 服务器 实现 非阻塞的服务!这样 才使得问题 得以 更好的解决! 

                                                              2015年10月30日03:01:06