相关疑难解决方法(0)

使用STARTTLS将套接字升级到SSLSocket:recv失败

我正在尝试使用STARTTLS将套接字升级到SSLSocket。在InspIRCd的Wiki上,这是应该如何工作的

>> STARTTLS
<< :test2.chatspike.net 670 nickname :STARTTLS successful, go ahead with TLS handshake
(SSL Handshake)
Run Code Online (Sandbox Code Playgroud)

所以在我的代码中,我已经写过(略有简化)

else if (code.equals("670")) {
    SSLSocketFactory sslSocketFactory = ((SSLSocketFactory) SSLSocketFactory.getDefault());
    SSLSocket sslSocket = (SSLSocket) sslSocketFactory.createSocket(
                        socket,
                        socket.getInetAddress().getHostAddress(),
                        socket.getPort(),
                        true);
    sslSocket.startHandshake();
    bufferedReader = new BufferedReader(new InputStreamReader(sslSocket.getInputStream(), getEncoding()));
    bufferedWriter = new BufferedWriter(new OutputStreamWriter(sslSocket.getOutputStream(), getEncoding()));
    socket = sslSocket;
}
Run Code Online (Sandbox Code Playgroud)

但是,无论是否有startHandshake(),我总是会收到一个recv失败(当我尝试从新的bufferedReader中读取时,我不会得到它

java.io.IOException: Can't connect to server
    at org.pircbotx.PircBotX.connect(PircBotX.java:472) [Exception handling]
    at org.pircbotx.PircBotX.connect(PircBotX.java:224) [Overridden constructor]
    at org.pircbotx.impl.PircBotXExample.main(PircBotXExample.java:185)
Caused by: java.net.SocketException: Software caused connection abort: recv failed
    at java.net.SocketInputStream.read(SocketInputStream.java:150)
    at …
Run Code Online (Sandbox Code Playgroud)

java irc ssl jsse

4
推荐指数
1
解决办法
3391
查看次数

标签 统计

irc ×1

java ×1

jsse ×1

ssl ×1