在Java中的现有套接字上创建未连接的SSLSocket



我正在通过SOCKS代理实现一个自定义TLS套接字工厂。在我应该覆盖的其他方法中,Socket createSocket()只是创建一个未连接的套接字,该套接字将在代码稍后的某个地方连接。

因此,在没有SOCKS代理的TLS套接字工厂中,我实现它的方式如下:

@Override
public Socket createSocket() throws IOException, UnknownHostException {
// Initialize my SSL Context
SSLContext sslCtx = initializeSSLContext();
SSLSocketFactory socketFactory = sslCtx.getSocketFactory();
// Return an unconnected socket
return socketFactory.createSocket();
}

在我的TLS套接字工厂overSOCKS中,等价物大致如下:

@Override
public Socket createSocket() throws IOException, UnknownHostException {
// proxy is an instance of java.net.Proxy
Socket socks = new Socket(proxy);
// Initialize my SSL context
SSLContext sslCtx = initializeSSLContext();
SSLSocketFactory socketFactory = sslCtx.getSocketFactory();
return socketFactory.createSocket(socks, ????, ????, true);
}

正如我前面提到的,我需要能够在不连接套接字的情况下创建套接字。SSLSocketFactory提供了两种在现有套接字上创建套接字的方法,但都假设您知道要连接的host:port

有没有任何方法可以在现有套接字(代理(上创建TLS套接字,但不提供目标主机?

提前感谢

使用SSLSocketFactory.createSocket()创建未连接的套接字。查看此处的文档以了解更多详细信息SSLSocketFactory

最新更新