java.net.ConnectException Fehler in Java
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
ConnectException
ausgelö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
ConnectException
ausgelöst. - Wenn die Sicherheit die Kommunikation verbietet, zum Beispiel im Fall einer Firewall. In diesem Fall wird die
ConnectException
ausgelöst. - Wenn die Einstellungen überschrieben werden, läuft der Server möglicherweise, listet aber Ports auf und löst die
ConnectException
aus. - Wenn die Verbindungszeichenfolge nicht korrekt ist, zum Beispiel
Connection DemoConnection = DriverManager.getConnection(
jdbc:mysql://localhost/:3306? +
user=&password= );
. Es wird dieConnectException
werfen. - Wenn versehentlich die falsche Portnummer angegeben wird, wird die
ConnectException
ausgelö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
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