我正在尝试使用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)