在前文已经说到在MainClientExec#execute中充连接池中获取连接,那么拿到连接之后如何把socket绑定到这个连接对象中的呢。
还是在MainClientExec#execute中获取连接下面还有这么一段代码
if (!managedConn.isOpen()) { //连接是否打开 其实就是判断连接对象中的socket连接是否为空
this.log.debug("Opening connection " + route);
try {
establishRoute(proxyAuthState, managedConn, route, request, context);
} catch (final TunnelRefusedException ex) {
if (this.log.isDebugEnabled()) {
this.log.debug(ex.getMessage());
}
response = ex.getResponse();
break;
}
}
若是socket还没绑定则调用establishRoute方法
void establishRoute(
final AuthState proxyAuthState,
final HttpClientConnection managedConn,