Java.Net.SocketTimeoutException: Zeitüberschreitung bei Verbindung
- Sockets in Java
- Zeitüberschreitungen in Java
-
Ursachen für
java.net.SocketTimeoutException: Connection timed out
in Java -
Lösung für
java.net.SocketTimeoutException: Connection timed out
in Java
Im heutigen Artikel befassen wir uns mit java.net.SocketTimeoutException: Connection timed out
. Aber zuerst werfen wir einen genaueren Blick auf die Konzepte von Sockets und Timeouts.
Sockets in Java
Eine logische Verbindung zwischen zwei Computeranwendungen kann mehrere Endpunkte haben, von denen einer ein Socket ist.
Anders ausgedrückt handelt es sich um eine logische Schnittstelle, die Anwendungen zum Senden und Empfangen von Daten über ein Netzwerk verwenden. Eine IP-Adresse und eine Portnummer umfassen einen Socket in seiner einfachsten Form.
Jedem Socket wird eine eindeutige Portnummer zugewiesen, die zur Identifizierung des Dienstes verwendet wird. Verbindungsbasierte Dienste verwenden Stream-Sockets, die auf TCP basieren.
Aus diesem Grund bietet Java die Klasse java.net.Socket
als clientseitige Programmieroption an.
Andererseits wird die Klasse java.net.ServerSocket
in der serverseitigen TCP/IP-Programmierung verwendet. Der auf UDP basierende Datagramm-Socket ist eine andere Art von Socket und wird für verbindungslose Dienste verwendet.
Java unterstützt java.net.DatagramSocket
für UDP-Operationen.
Zeitüberschreitungen in Java
Eine Instanz eines socket
-Objekts wird erstellt, wenn der socket
-Konstruktor aufgerufen wird, was eine Verbindung zwischen dem Client und dem Server von der Client-Seite ermöglicht.
Als Eingabe erwartet der Konstruktor die Adresse des entfernten Hosts und die Portnummer. Danach versucht es, die bereitgestellten Parameter zu verwenden, um eine Verbindung zum Remote-Host herzustellen.
Der Vorgang verhindert, dass andere Prozesse fortgesetzt werden, bis eine erfolgreiche Verbindung hergestellt wurde. Die Anwendung gibt jedoch den folgenden Fehler aus, wenn die Verbindung nach einer bestimmten Zeit nicht erfolgreich ist.
java.net.SocketTimeoutException : Connection timed out
Serverseitig ist die Klasse ServerSocket
permanent aktiv, um eingehende Verbindungsanfragen abzuhören. Wenn eine Verbindungsanfrage von ServerSocket
empfangen wird, wird die Funktion accept
aufgerufen, um ein neues socket
-Objekt zu erstellen.
Ähnlich wie bei der vorherigen Methode blockiert diese, bis der Remote-Client verbunden ist.
Ursachen für java.net.SocketTimeoutException: Connection timed out
in Java
Im Folgenden sind einige mögliche Gründe für den Fehler aufgeführt.
- Der Server funktioniert einwandfrei. Der Wert
timeout
wird jedoch auf eine kürzere Zeit eingestellt. Erhöhen Sie deshalb den Wert destimeout
. - Auf dem Remote-Host wird der angegebene Port von keinem Dienst überwacht.
- Es wird keine Route zum Remote-Host gesendet.
- Der Remote-Host scheint keine Verbindungen zuzulassen.
- Beim Erreichen des Remote-Hosts ist ein Problem aufgetreten.
- Internetverbindung, die entweder langsam oder nicht verfügbar ist.
Lösung für java.net.SocketTimeoutException: Connection timed out
in Java
Wir können die Option timeout
für Client- und Serveraktivitäten voreinstellen. Das Hinzufügen der Konstrukte try
und catch
wäre eine geeignete Lösung.
-
Auf der Client-Seite konstruieren wir als erstes einen Null-
socket
. Danach verwenden wir die Methodeconnect()
und konfigurieren dann den Parametertimeout
, wobei das Timeout grösser als 0 Millisekunden sein sollte.Wenn das Timeout abläuft, bevor die Funktion zurückkehrt, wird
SocketTimeoutException
geworfen.Socket s = new Socket(); SocketAddress sAdres = new InetSocketAddress(host, port); s.connect(sAdres, 50000);
-
Wenn Sie serverseitig einen
timeout
-Wert setzen möchten, können Sie die FunktionsetSoTimeout()
verwenden. Der Wert des Parameterstimeout
bestimmt, wie lange die FunktionServerSocket.accept()
blockiert.ServerSocket servers = new new ServerSocket(port); servers.setSoTimeout(10000);
Ebenso sollte das
timeout
mehr als 0 Millisekunden betragen. Wenn dastimeout
abläuft, bevor die Methode zurückkehrt, generiert die Methode eineSocketTimeoutException
. -
Das Bestimmen eines Verbindungs-Timeouts und das anschließende Behandeln mit einem
try-catch
-Block ist eine weitere hervorragende Technik, um mitHttpException
umzugehen.HttpUrlConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(8000);
I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.
LinkedInVerwandter 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