java.net.SocketException: Software caused connection abort: recv failed
//ssf是通过getSocketFactory()获得的
socket = (SSLSocket) ssf.createSocket(InetAddress.getByName(host), port);
socket.startHandshake();
//这上面应该没什么问题,因为没有抛出异常
try {
Writer out = new OutputStreamWriter(socket.getOutputStream());
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
String tmp;
out.write("POST https://" + host + "/omc/xml HTTP/1.1\r\n");
out.write(...)
...
//下面就是读取socket值了
String s = "";
while (! (tmp = in.readLine()).equals("")) {
}
String content = in.readLine();
......
}
catch (IOException ex1) {
ex1.printStackTrace();
return null;
}
catch (NullPointerException ex2) {
ex2.printStackTrace();
return null;
}
经过运行产生如下异常:
java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at com.sun.net.ssl.internal.ssl.InputRecord.readFully(Unknown Source)
at com.sun.net.ssl.internal.ssl.InputRecord.read(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.waitForClose(Unknown Sourc
e)
at com.sun.net.ssl.internal.ssl.HandshakeOutStream.flush(Unknown Source)
捕获的那两个异常也有。这里不贴出来了。
哪位分析一下原因呢?并说说解决的方法。