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

标签 java sockets network-programming

我正在通过SOCKS代理实现自定义TLS套接字工厂。我应使用替代的其他方法Socket createSocket(),它只是创建一个未连接的套接字,该套接字将在代码的稍后位置进行连接。

因此,在没有Socket代理的
的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套接字工厂 SOCKS中,等效项大致如下所示:

@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

关于java - 在Java中的现有套接字上创建未连接的SSLSocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53766747/

相关文章:

java - 在已排序的 HashMap 中选择顶部 'n' 条目

java - Android YouTube 获取用户播放列表

C 套接字 : recv and send simultaneously

c - 通过c中的套接字发送多条消息

C# 服务器-客户端应用程序建议

java - intent.resolveActivity(getPackageManager()) 究竟在做什么?

java - 如何用EJB实现永久后台进程?

python setockopt 什么是磨损

c - 我的简单 poll() 示例仅部分起作用

linux - 如何观察 Linux 上进程的 TCP 连接变量?