- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的代码中,根据 boolean 标志,我应该决定是否与 SSL 套接字握手。我使用 SSLSocketFactory 创建套接字,这是从官方 Javadoc 获取的 createSocket 方法的签名。
abstract Socket createSocket(Socket s, String host, int port, boolean autoClose)
返回 Socket
而不是 SSLSocket
似乎是一个明确的设计选择,这意味着使用此方法的类不需要知道 Socket
是一个 SSLSocket
。
但是,如果我必须握手,我必须向下转换它,因为方法
public abstract void startHandshake() throws java.io.IOException;
在 SSLSocket 类上定义。
SSLSocket socket = (SSLSocket) SSLSocketFactory.getDefault().createSocket( getApiServerAddress(), getPort() );
三个可能的答案中哪个是正确的?
库中的这种设计模式表明您不应该直接调用 startHandShake(),而是调用 Socket 类上的某个方法,该方法将调用 startHandShake()。 Socket 类上的这个方法是什么?而且,如果是这种情况,为什么 startHandShake() 是公开的?
图书馆设计不佳。
我没有以正确的方式创建 SSLSocket。
最佳答案
因为createSocket
方法继承自SocketFactory
。无法覆盖结果类型。
可以使用泛型来解决它,但这会破坏现有的 API 和所有现有的代码。
关于java - 为什么 SSLSocketFactory.createSocket 返回一个套接字而不是 SSLSocket?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18226797/
我正在为一个系统编写 Android 客户端,该系统需要我打开一个 SSLSocket 到代理服务器,进行隧道握手,然后在隧道上创建另一个 SSLSocket。这是我创建隧道的代码: SSLS
我正在尝试在 Android 应用中的另一个 SSLSocket 之上创建一个 SSLSocket。较低的连接是到 Secure Web Proxy 的 SSL 安全连接。 (基于 SSL 的 HTT
我正在尝试创建一个 TLS 客户端,它将向任何 https 服务器发送 GET 请求。但是,当服务器尝试第二次或更多次发送 GET 请求时,没有来自服务器的输入。我不明白为什么它会跳过其他响应。 客户
更好地理解 TLS 机制。 我想知道我的服务器及其每个客户端在握手后同意使用的密码套件是什么。但是,我在网上找不到任何方法或任何信息来执行此操作。 我有 Java 服务器并可以访问 SSLSocket
我有一个 Java 服务器需要关闭所有连接的选项。作为其中的一部分,我在每个客户端套接字上调用 close() 。我遇到的问题是这个调用有时会无限期地阻塞。 我只能通过模拟数百个用户来重现这一点,因此
我正在尝试找到一种使用 SSL 在 Java 客户端和 C 服务器之间建立连接的方法。 这是java客户端: import java.io.BufferedWriter; import java.io
我正在尝试让我的 java 客户端使用 SSL 与 C 服务器通信。 问题是 - 我没有任何服务器源并且我收到握手失败错误: Exception in thread "main" javax.net.
我目前正在为一个学校项目开发 Java 服务器平台。我正在使用 SSL TCP 套接字进行通信,我正处于开发客户端和服务器之间的 JSon 协议(protocol)的阶段。 我的问题是协议(proto
我正在尝试在 Java 中将 SSL 与 IMAP 结合使用。我不想使用 IMAP 类。出于某种原因,当我发送第 n 条消息时,我收到了消息 n-2 的回复,而不是消息 n-1 的回复。这意味着在发送
我正在编写一个客户端-服务器聊天应用程序。我想加密这两者之间的连接。我第一次这样做,我觉得很难。据我了解,我需要一个用于客户端的信任库和一个用于服务器的 keystore 。我已按照本指南生成它们:h
我在 StackOverflow 上到处搜索,但这些问题似乎与我的不同,我在修复它时遇到了很多麻烦。 现在,我的程序应该只使用 SSL 套接字建立客户端-服务器连接,客户端只发送一条消息并关闭(稍后我
我为我的 Android 应用程序使用 SSLSocket根据这篇文章,SSLSocket 不执行主机名验证 here 而且我在使用 IP 而不是域时没有看到任何异常,并且一切正常那么我可以使用 IP
我目前正在开发一个 Android 应用程序,我需要在该应用程序上执行连接到测试服务器的 SSLSocket。 问题是我们不会为该服务器购买证书,因为它是测试服务器,而不是生产服务器。 虽然它在模拟器
在 JSSE 文档中,它只是说 sslsocket 可以由 SSLSocketFactory 通过调用 createSocket 创建。但是它没有描述如何调用 ssl 握手,如何传递 key Mate
如何在创建 SSLSocket 时设置本地端口? 这是我创建套接字的方式: SSLSocketFactory factory = (SSLSocketFactory)SSLSocketFactory.
我想用 Java 实现一个 SSL 代理。我基本上开了两个socket browser-proxy , proxy-server ,并运行两个线程来写入 proxy-server他们阅读的内容 bro
有没有办法让 SSLSocket 在不使用 addHandshakeListener() 方法的情况下等待握手完成?我希望它在完成握手之前一直阻塞。 编辑:稍微澄清一下:最初使用常规(非 SSL)套接
我正在从 SSL 套接字读取,但主机与证书不匹配(例如 host = "localhost")。我预计会出现异常,但以下代码很高兴地与远程服务器对话,没有任何问题。 try ( final S
有一个普通的套接字服务器监听端口12345; ServerSocket s = new ServerSocket(12345); 我想知道的是,有可能: 如果客户端发送http请求,服务器直接处理请求
我正在尝试使用协议(protocol) TLSv1.2 通过 SSLSocket 连接服务器。服务器仅支持以下密码。 ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-RSA-A
我是一名优秀的程序员,十分优秀!