客户端连接服务端使用的是connect
方法,整体过程如下:
整体源码过程如下:
在这个过程我们感兴趣的是doConnect
方法,它是AbstractNioChannel的一个抽象方法,其客户端使用的实现类NioSocketChannel实现了这个方法,源码过程如下:
接下来我们详细分析SocketUtils.connect()
和finishConnect()
方法
SocketUtils.connect()
最终调用java底层的connect
方法进行连接,如果是非阻塞的话会返回false,后续会调用finishConnect()
完成整个connect操作;如果是阻塞的话会等待连接成功并返回结果true。
finishConnect()
当netty的eventloop轮询检测到OP_CONNECT
事件时会调用finishConnect()
完成连接,源码如下:
doFinishConnect
方法源码如下:
fulfillConnectPromise
方法主要是设置promise状态值,源码如下:
至此Unsafe的connect方法分析结束。
版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: