【问题标题】:Java SSLSocket - how to set local portJava SSLSocket - 如何设置本地端口
【发布时间】:2012-11-11 04:02:04
【问题描述】:

创建 SSLSocket 时如何设置本地端口?

这就是我创建套接字的方式:

SSLSocketFactory factory = (SSLSocketFactory)SSLSocketFactory.getDefault();  
SSLSocket s = (SSLSocket) factory.createSocket(SERVER_ADDRESS, SERVER_PORT);

好像createSocket方法没有设置LOCAL_PORT的参数,SSLSocket的构造函数也不起作用。

谢谢

【问题讨论】:

  • 你考虑过阅读 Javadoc 吗?
  • 嗯,其实我也读过。如果您也阅读它,您会发现 SSLSocket 没有实现允许您设置本地端口的方法。
  • 我已经读了很多遍了,谢谢,而且肯定有一种方法,尽管没有人说它是在 SSLSocket 中。请参阅@Philipp 的回答。请注意,您已经有大约 10 年不需要添加该提供商了。
  • 好的,谢谢提供者提示。我删除了它。

标签: java sockets ssl


【解决方案1】:

有一个 createSocket 方法的变体,它由 SSLSocketFactory 从 SocketFactory 继承,它接受一个主机和一个端口。见the documentation

【讨论】:

  • 我需要一个 SSLSocket 而不是普通的 Socket。因为服务器需要。
  • 您将获得一个 SSLSocket。 SSLSocketFactory 扩展了 SocketFactory,而 SSLSocket 扩展了 Socket。当你调用 SSLSocketFactory 的 createSocket 方法时,它会返回一个 SSLSocket,即使它从 SocketFactory 继承了这个特定变体的方法声明。但是,它确实将其“伪装”为普通的 Socket 引用。但是您应该能够将返回的 Socket 向下转换为 SSLSocket。
  • @HasanTahsin,你试过哪种方法不起作用?在您的SSLSocketFactory 上调用createSocket(String host, int port, InetAddress localHost, int localPort) 是可行的方法。为什么这是一种令人讨厌的方式呢?
  • @Bruno 对不起。我误解了答案。它有效
猜你喜欢
  • 2020-12-12
  • 1970-01-01
  • 1970-01-01
  • 2018-07-09
  • 2012-01-18
  • 1970-01-01
  • 2015-09-01
  • 2021-09-26
  • 1970-01-01
相关资源
最近更新 更多