JAVA 非阻塞通信(NIO)相比普通socket通信,非阻塞表现在哪里?本质区别是什么?
socketChannel 一般伴随着: 1 selector 2 socketChannel.configureBlocking(false); ------当参数为true时 是否与普通socket通信一样? 3 socketChannel.write(buffer); 4 socketChannel.read(buffer); socketChannel建立连接后如果断开了 如何重连? if (canel.isConnectionPending()) {canel.finishConnect(); } ------------正常情况下这里执行完后是不是就socketChannel.isConnected()=true? 之前客户端服务器用的是socket通信 现在想把客户端改成socketChannel的 怎么改 需要加selector么? socketChannel的客户端对接serversocket服务器 是否能够正常通信?
最满意答案
0,重连,重新再来过一次呗。 1,NIO 本身是提供非阻塞式的网络访问,使用 selector 来轮询事件,因此用 selector 才能改进性能,一个 selector 可以用在多个 socket 通信中而不像以前传统的一个线程一个 socket 流这么麻烦地管理它们。 2,客户端与服务端是互不影响的,完全不相关。我们完全不需要关心对方是C++ / VB 还是 Java ,只要双方使用的都是 TCP 协议就行了。 NIO 是在与操作系统的模块打交道,尽量提高性能,所有的真实过程其实都是在 JVM 的 native 代码与操作系统中处理了,对我们应用程序来说,使用什么方法并没有区别。更多推荐
发布评论