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 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
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
