java.net.ConnectException Fehler in Java

Sheeraz Gul 12 Oktober 2023
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:

  1. 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.
  2. 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.
  3. Wenn die Sicherheit die Kommunikation verbietet, zum Beispiel im Fall einer Firewall. In diesem Fall wird die ConnectException ausgelöst.
  4. Wenn die Einstellungen überschrieben werden, läuft der Server möglicherweise, listet aber Ports auf und löst die ConnectException aus.
  5. Wenn die Verbindungszeichenfolge nicht korrekt ist, zum Beispiel Connection DemoConnection = DriverManager.getConnection(jdbc:mysql://localhost/:3306?+user=&password= );. Es wird die ConnectException werfen.
  6. 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 Gul avatar Sheeraz Gul avatar

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 Facebook

Verwandter Artikel - Java Error