java.net.SocketException: Software hat Verbindungsabbruch verursacht: recv ist fehlgeschlagen


4 Answers

Dies ist auch dann der Fall, wenn Ihr TLS-Client nicht vom Server authentifiziert werden kann, der für die Client-Authentifizierung konfiguriert ist.

Question

Diese Frage hat hier bereits eine Antwort:

Ich konnte keine angemessene Antwort darauf finden, was genau der folgende Fehler bedeutet:

java.net.SocketException: Software caused connection abort: recv failed

Anmerkungen:

  • Dieser Fehler ist selten und unvorhersehbar; obwohl das Erzielen dieses Fehlers bedeutet, dass alle zukünftigen Anforderungen für URIs ebenfalls fehlschlagen.
  • Die einzige Lösung, die (auch nur gelegentlich) funktioniert, ist das Neustarten von Tomcat und / oder der tatsächlichen Maschine (in diesem Fall Windows).
  • Der URI ist definitiv verfügbar (wie durch das Bitten des Browsers bestätigt, den Abruf durchzuführen).

Relevanter Code:

BufferedReader reader;
try { 
 URL url = new URL(URI);
 reader = new BufferedReader(new InputStreamReader(url.openStream())));
} catch( MalformedURLException e ) { 
 throw new IOException("Expecting a well-formed URL: " + e); 
}//end try: Have a stream

String buffer;
StringBuilder result = new StringBuilder();
while( null != (buffer = reader.readLine()) ) { 
 result.append(buffer); 
}//end while: Got the contents.
reader.close();



Überprüfen Sie, ob auf dem http-Port ein anderer Dienst oder ein anderes Programm ausgeführt wird. Es ist mir passiert, als ich versuchte, den Port zu benutzen, und es wurde von einem anderen Programm übernommen.




Fügen Sie 'autoReconnect = true' zur jdbc-Verbindungszeichenfolge hinzu




Ich hatte auch dieses Problem. Meine Lösung war:

sc.setSoLinger(true, 10);

KOPIEREN VON EINER WEBSEITE -> Mit der Methode setSoLinger() können Sie explizit eine Verzögerung festlegen, bevor ein Reset gesendet wird. setSoLinger() gibt mehr Zeit für das Lesen oder Senden von Daten.

Vielleicht ist es nicht die Antwort für alle, sondern für einige Leute.




Das einzige Mal, dass so etwas passiert, ist, wenn ich eine schlechte Verbindung habe oder wenn jemand den Socket schließt, den ich aus einem anderen Thread-Kontext verwende.




Related



Tags

java java   sockets