java.net.SocketException: Software verursacht Verbindungsabbruch: Recv in Java fehlgeschlagen
Dieses Tutorial zeigt, wie Sie den folgenden Fehler in Java beheben:
java.net.SocketException: Software caused connection abort: recv failed
Beheben Sie die java.net.SocketException: Software Caused Connection Abort: Recv Failed
in Java
Die SocketException
ist eine Unterklasse von IOException
, die auftritt, wenn wir versuchen, auf einen Socket zuzugreifen. Der Software Caused Connection Abort: Recv Failed
erscheint, wenn ein Netzwerkfehler wie ein Timeout vorliegt oder der Server den TLS-Client nicht authentifizieren kann.
Meistens tritt dieser Fehler auf, wenn Plattformen wie Tomcat verwendet werden. Dieser Fehler tritt auf, wenn die TCP-Verbindung zurückgesetzt wird, während sich noch Daten im Puffer befinden, wodurch die Verbindung abrupt beendet wird.
Dieser Fehler ähnelt der Ausnahme Connection Reset by Peers
. Hier ist ein Beispiel, das die Ausnahmen java.net.SocketException: Software cause connection abort: recv failed
auslösen kann.
BufferedReader Buffered_Reader;
String URI = "https://www.delftstack.com/";
try {
URL DEMOURL = new URL(URI);
Buffered_Reader = new BufferedReader(new InputStreamReader(DEMOURL.openStream()));
} catch (MalformedURLException e) {
throw new IOException("Enter the correct URL: " + e);
}
String DemoBuffer;
StringBuilder Result_StringBuilder = new StringBuilder();
while (null != (DemoBuffer = Buffered_Reader.readLine())) {
Result_StringBuilder.append(DemoBuffer);
}
Buffered_Reader.close();
Der obige Code versucht, auf den HTTP-Client zuzugreifen, aber die Verbindung wird abrupt geschlossen. Der Fehler tritt in der Zeile auf:
Buffered_Reader = new BufferedReader(new InputStreamReader(DEMOURL.openStream()));
Dies liegt daran, dass DEMOURL.openStream()
für einen HTTP-Client nicht richtig funktioniert. Die Verwendung von Apache Commons HttpClient
löst dieses Problem.
Der HttpClient
öffnet die Verbindung erneut und versucht die Anfrage erneut. Die Verwendung der Bibliothek HttpClient
hilft uns, die Fehlermeldungen besser zu verstehen. Der HttpClient
verfügt über Connection Pooling, Retry-Mechanismus, Keep-Alive und viele weitere Features.
Hier ist ein Beispiel für dieses Szenario:
String URI = "https://www.delftstack.com/";
HttpClient Demo_Http_Client =
HttpClients.custom()
.setConnectionTimeToLive(10, TimeUnit.SECONDS)
.setMaxConnTotal(200)
.setMaxConnPerRoute(200)
.setDefaultRequestConfig(
RequestConfig.custom().setSocketTimeout(15000).setConnectTimeout(2500).build())
.setRetryHandler(new DefaultHttpRequestRetryHandler(3, true))
.build();
// the httpClient can be re-used as it is thread-safe and pooled.
HttpGet Http_Get_request = new HttpGet(URI);
HttpResponse Http_Response = Demo_Http_Client.execute(Http_Get_request);
Buffered_Reader = new BufferedReader(new InputStreamReader(Http_Response.getEntity().getContent()));
// handle the response.
Der obige Code behandelt den Client-Server-Betrieb ordnungsgemäß, und wenn ein Netzwerkfehler auftritt, wiederholt der HttpClient
den Vorgang.
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn FacebookVerwandter Artikel - Java Error
- Adresse wird bereits verwendet JVM_Bind-Fehler in Java
- Android Java.Lang.IllegalStateException behoben: Methode der Aktivität konnte nicht ausgeführt werden
- Ausnahme im Hauptthread Java.Lang.ClassNotFoundException in IntelliJ IDEA
- Ausnahme im Hauptthread Java.Lang.NoClassDefFoundError
- Beheben Sie das Problem, dass Java nicht installiert werden kann. Es gibt Fehler in den folgenden Schaltern
- Beheben Sie den Fehler `Es wurde keine Java Virtual Machine gefunden` in Eclipse