java - 我如何知道服务器是否支持 SSL?

标签 java ssl tcp

我需要连接到主机,如果它处于离线状态,我会收到 TCP 超时(没关系),如果它在线且 SSL 可用,我将进入登录阶段。

问题是,当服务器在线时,在配置的 TCP 端口上接受连接,但随后不响应 SSL 握手,我们的应用程序无限期地等待响应。

我正在使用由 JNI 封装的 IBM HACL (c++) 来访问服务器。

我如何测试(在 Windows XP 下的 Java 或 C++ 中)服务器端 SSL 的可用性?我可以手动启动握手,获得第一个服务器响应,然后关闭 TCP 套接字吗?还是我需要完成握手(我该怎么做?)

谢谢。

最佳答案

try {
    SSLContext ctx = SSLContext.getDefault();
    ctx.getClientSessionContext().setSessionTimeout(5); // in seconds
    SSLSocket socket = (SSLSocket) 
         ctx.getSocketFactory().createSocket("host.com", 443);

    socket.setSoTimeout(5000); // in millis
    socket.startHandshake();
} catch (IOException ex) {
    sslAvailable = false;
}

根据您的评论,socket.setSoTimeout(5000) 成功了。

如果还是不行,那么:

URLConnection urlConn = // obtain connection
urlConn.setConnectTimeout(5000); // in millis

关于java - 我如何知道服务器是否支持 SSL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2273973/

相关文章:

java - 我的业务代码什么时候真正执行?

java - ColorFilter 仅特定颜色

linux - HAProxy TCP session 计数停止在 400

node.js - 是否可以在 RTMP 协议(protocol)中为每个数据包插入额外的数据?

linux - 流量转发

Java:关闭我的应用程序但出现异常

java - 如何重定向到struts中的同一页面

java - 使用 <wsdl :import> over SSL redirection 使用 Web 服务

ios - 使用 AFNetworking 在 IOS 应用程序中集成 SSL 证书

scala - 使用 Akka 在 Scala 上使用 SSL 的 TCP 套接字