关于finishConnect()的疑问

来源:7-10 NIO模型多人聊天室演示

ice_wolf

2019-11-23

老师我看到finishConnect()这个函数的注释中有这样一句话:

If this channel is in non-blocking mode then this method will return false if the connection process is not yet complete.

那是不是说即使我们调用了这个函数,由于是非阻塞式调用,那么也不能保证当这个函数返回时连接已经建立了呢?如果是这样的话那么调用这个函数的意义在哪里呢?

写回答

1回答

Stannum

2019-12-29

同学好~正如文档中解释的那样,finishConnect()函数可以用来完结创建连接的请求过程。在我们的实战例子里,由于服务器端的实现并不复杂,实际情境中的负载也不高,所以我们在这里没有做额外的处理。不过,在架构复杂度更高和负载更大的情境中,正如你所说,我们可以在代码中进一步检查finishConnect()返回的值是否为true,来决定是否要继续等待连接的创建过程完结,还是根据具体需求做出连接超时的处理。


1
0

系统学习Java网络编程 深度理解BIO/NIO/AIO

对比式学习助你真正理解BIO/NIO/AIO三大网络编程模型。

880 学习 · 148 问题

查看课程