HOWTO · Java
java.net.ConnectException Fehler in Java
Dieses Tutorial demonstriert den java.net.ConnectException-Fehler in Java.
Auf dieser Seite
Dieses Tutorial demonstriert den Fehler java.net.ConnectException in Java.
der java.net.ConnectException-Fehler in Java
Die java.net.ConnectException ist die häufigste Ausnahme bei der Arbeit mit Netzwerken. Es tritt meistens auf, wenn eine TCP-Verbindung zwischen dem Client, der Anwendung und dem Server hergestellt wird.
Es handelt sich um eine überprüfte Anwendung, die im Code mithilfe der Try-Catch-Blöcke behandelt werden kann. Diese Ausnahme ist eine Unterklasse der IO-Ausnahme.
Hier ist die Hierarchie dieser Ausnahme:
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.io.IOException
java.net.SocketException
java.net.ConnectException
Hier sind die möglichen Gründe für diese Ausnahme:
- Wenn sich Client und Server nicht im selben Netzwerk befinden, sollten sich beide im Netzwerk wie Internet oder LAN befinden; Andernfalls wird die
ConnectExceptionausgelöst. - Wenn der Server nicht läuft. Normalerweise sind die Ports wie 3306 (MySQL), 8080 (für Tomcat), 27017 (MongoDB) und 3000 oder 4200 (für React/Angular) vollständig ausgefallen oder von einer anderen Entität belegt, und es wird die
ConnectExceptionausgelöst. - Wenn die Sicherheit die Kommunikation verbietet, zum Beispiel im Fall einer Firewall. In diesem Fall wird die
ConnectExceptionausgelöst. - Wenn die Einstellungen überschrieben werden, läuft der Server möglicherweise, listet aber Ports auf und löst die
ConnectExceptionaus. - Wenn die Verbindungszeichenfolge nicht korrekt ist, zum Beispiel
Connection DemoConnection = DriverManager.getConnection(jdbc:mysql://localhost/:3306? +user=&password= );. Es wird dieConnectExceptionwerfen. - Wenn versehentlich die falsche Portnummer angegeben wird, wird die
ConnectExceptionausgelöst.
Versuchen wir ein Beispiel für ConnectException:
package delftstack;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.*;
import java.util.*;
public class Example {
public static void main(String[] args) throws IOException {
String Host_Name = "127.0.0.1";
int Port_Number = 808;
Socket New_Socket = new Socket(Host_Name, Port_Number);
InputStream Input_Stream = New_Socket.getInputStream();
InputStreamReader Input_Stream_Reader = new InputStreamReader(Input_Stream);
int Demo_Data;
StringBuilder Output_String = new StringBuilder();
while ((Demo_Data = Input_Stream_Reader.read()) != -1) {
Output_String.append((char) Demo_Data);
}
}
}
Der obige Code löst die ConnectException aus, da der Port und die IP ungültig sind. Siehe Ausgabe:
Exception in thread "main" java.net.ConnectException: Connection refused: connect
at java.base/sun.nio.ch.Net.connect0(Native Method)
at java.base/sun.nio.ch.Net.connect(Net.java:579)
at java.base/sun.nio.ch.Net.connect(Net.java:568)
at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
at java.base/java.net.Socket.connect(Socket.java:633)
at java.base/java.net.Socket.connect(Socket.java:583)
at java.base/java.net.Socket.<init>(Socket.java:507)
at java.base/java.net.Socket.<init>(Socket.java:287)
at delftstack.Example.main(Example.java:16)
Jetzt können wir die Ausnahme behandeln, indem wir die try-catch-Blöcke verwenden. Da es sich um eine überprüfte Ausnahme handelt, ist es notwendig, der Methode throws hinzuzufügen.
Sehen wir uns die Lösung an:
package delftstack;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.*;
import java.util.*;
public class Example {
public static void main(String[] args) throws IOException {
String Host_Name = "127.0.0.1";
int Port_Number = 808;
try (Socket New_Socket = new Socket(Host_Name, Port_Number)) {
InputStream Input_Stream = New_Socket.getInputStream();
InputStreamReader Input_Stream_Reader = new InputStreamReader(Input_Stream);
int Demo_Data;
StringBuilder Output_String = new StringBuilder();
while ((Demo_Data = Input_Stream_Reader.read()) != -1) {
Output_String.append((char) Demo_Data);
}
}
catch (ConnectException ex) {
System.out.println(
"The Connect Exception occured becuase the given hostname and port are invalid : "
+ ex.getMessage());
}
}
}
Jetzt wird die Ausnahme behandelt, sodass der Code nicht abstürzt. Siehe Ausgabe:
The Connect Exception occured becuase the given hostname and port are invalid : Connection refused: connect