2 qq 26460555 qq_26460555 于 2017.09.06 11:23 提问

NIO SocketChannel连接报错
private static void testSocketChannel() throws IOException{
    SocketChannel socketChannel = SocketChannel.open();
    socketChannel.configureBlocking(false);
    socketChannel.connect(new InetSocketAddress(10086));
    while(!socketChannel.finishConnect()){
        System.out.println("connecting....");
        try {
            Thread.currentThread().sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    System.out.println("connect success!!");
}

代码如图所以,设想是在连接成功之前,控制台会一直输出connecting....,但运行时只输出2行就报错了。。。。。

1个回答

oyljerry
oyljerry   Ds   Rxr 2017.09.06 12:02

你应该把连接注册到selector。然后在事件中处理。然后决定是否重试connect

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Java NIO SocketChannel客户端例子(支持连接失败后自动重连)
这两天想找找标题里说的这个示例代码,发现网上这么多教程,连怎么样实现自动重连都不讲,所以把自己写的例子贴上来。仅仅使用递归,不使用多线程,就可以实现初步的目的: import java.io.IOException; import java.net.ConnectException; import java.net.InetSocketAddress; import java.nio.ByteB
java nio socketChannel read
当socketChannel为阻塞方式时(默认就是阻塞方式)read函数,不会返回0,阻塞方式的socketChannel,若没有数据可读,或者缓冲区满了,就会阻塞,直到满足读的条件,所 以一般阻塞方式的read是比较简单的,不过阻塞方式的socketChannel的问题也是显而易见的。这里我结合基于NIO 写ftp服务器调试过程中碰到的问题,总结一下非阻塞场景下的 read碰到的问题。注意:
NIO编程之ServerSocketChannel用法详解
之前一直看不懂NIO中的ServerSocketChannel和SocketChannel的区别,看了这篇博文,感觉通俗易懂,于是决定分享一下。。。。 在用nio通讯的过程我用以下情景给你模拟: 1. 学校(ServerSocketChannel) 2。 学校教务处(Selector) 3。 老师 (ServerSocket ) 4。 学生 (SocketChan
java nio SocketChannel 服务器端与多客户端 信息交互(聊天功能)
服务端代码:
NIO--SocketChannel发送HTTP请求
import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SocketChannel; import java.nio.charset.Charset; /** * Created with . * Date: 14-5-27 * Time: 上午11:38 * To c
JAVA NIO写服务端判断客户端断开连接的方法
不过这个方法有个问题,就是    1、能侦测到客户端主动断开与服务端的连接,但是如果客户端掉线,服务端就接收不到了。。 2、如果处于等待状态,就会出问题。比如说客户端的数据还没有准备好发送,这样你就已经关闭了链接。 最近学习NIO,一直有个疑问,怎么知道客户端断开了连接. 在上网找和试验之后发现下面的方法可以实现这个目的. 我们一般会在服务端有个大的W
Java之NIO(二)selector socketChannel
本文简单的介绍了javaNIO selector的使用方法,并对传统IO和 NIO的网络编程模型做了简单的分析,然后使用selector和ServerSocketChannel 结合,完成了极为简单的即时通讯。
关于判断Socket断开的问题
采用CS结构的网络应用,比如QQ,一般都有判定网络连接通断的需求,比如服务器判断客户端是否在线等。一般情况下,通过发心跳能够解决。但如果希望快速判断,那么就需要用一些特殊的方法。 走了不少弯路后,说下我现在在一个项目的server上使用的方法。 在windows平台上,最早使用的是一个客户端一个线程的方式,当然,效率就低一些了。在这种方式下,采用的是阻塞Socket,可以使用socket.se
Java NIO学习8(Selector 补充版SocketChannel)
SocketChannel public abstract class SocketChannel extends AbstractSelectableChannel implements ByteChannel, ScatteringByteChannel, GatheringByteChannel { // This is a partial API listing public s
用socketchannel实现多客户端与服务器端的通信
用socket实现两方通信是很简单的,多方通信的话,java提供NIO非阻塞技术来解决这个问题。 NIO 有一个主要的类Selector,这个类似一个观察者,只要我们把需要探知的socketchannel告诉Selector,我们接着做别的事情,当有事件发生时,他会通知我们,传回一组SelectionKey,我们读取这些Key,就会获得我们刚刚注册过的socketchannel,然后,我们从这个