java.net.ConnectException-Beispiel

java.net.ConnectException wird ausgelöst, wenn der Client-Socket keine Verbindung zum Server-Socket herstellen kann. java.net.ConnectException ist eine Unterklasse von java.net.SocketException. In diesem kurzen Tutorial werde ich ein einfaches Programm für den Client-Socket schreiben, das Nachrichten an den Server-Socket sendet. Anschließend verarbeitet der Server-Socket die Nachricht und druckt sie aus. Wenn beim Client ein Problem beim Herstellen einer Verbindung zum Server-Socket auftritt, wird eine java.net.ConnectException ausgelöst. Bitte lesen Sie unseren vorherigen Artikel zur WebSocket-Unterstützung in Java EE 7.

Im Folgenden sind die häufigsten Szenarios aufgeführt, in denen diese Ausnahme ausgelöst wird:

  • Wenn der Server nicht gestartet ist und der Client versucht, eine Verbindung zum Server herzustellen
  • Wenn der Client versucht, eine Verbindung zur falschen Portnummer herzustellen
  • Wenn der Client versucht, eine Verbindung zum falschen Hostnamen oder zur falschen IP-Adresse herzustellen
  • Wenn Server und Client entfernt sind. Sie befinden sich jedoch in einem anderen Netzwerk, in dem keine Verbindung zulässig ist.

java.net.ConnectException-Beispiel

Hier ist das einfache Beispiel, das die ConnectException demonstriert.

	
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;

public class ConnectExceptionExample {
	public static void main(String[] args) {
		new Thread(new ExampleServer()).start();
		new Thread(new ExampleClient()).start();
	}
}

class ExampleServer implements Runnable {
	@Override
	public void run() {
		ServerSocket serverSocket = null;
		while (true) {
			try {
				serverSocket = new ServerSocket(1111);
				Socket clientSocket = serverSocket.accept();
				BufferedReader inputReader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
				System.out.println("Message Received :" + inputReader.readLine());
			} catch (IOException e) {
				e.printStackTrace();
			} finally {
				try {
					serverSocket.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

class ExampleClient implements Runnable {
	@Override
	public void run() {
		Socket socket = null;
		try {
			Thread.sleep(1000);
			socket = new Socket("localhost", 1111);
			PrintWriter outWriter = new PrintWriter(socket.getOutputStream(), true);
			outWriter.println("Message from Client!");
		} catch (InterruptedException e) {
			e.printStackTrace();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {

			try {
				socket.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

Wenn Sie das obige Programm ausführen, erhalten Sie die folgende Ausgabe:

Message Received :Message from Client!

Ändern Sie nun die Portnummer für den Server in etwa wie folgt und führen Sie dann die Anwendung aus.

serverSocket = new ServerSocket(1112);

Sie erhalten die java.net.ConnectException wie folgt:

java.net.ConnectException: Connection refused: connect
	at java.net.DualStackPlainSocketImpl.connect0(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:337)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:198)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
	at java.net.Socket.connect(Socket.java:579)
	at java.net.Socket.connect(Socket.java:528)
	at java.net.Socket.<init>(Socket.java:425)
	at java.net.Socket.<init>(Socket.java:208)
	at infy.org.ExampleClient.run(ConnectExceptionExample.java:47)
	at java.lang.Thread.run(Thread.java:722)
Exception in thread "Thread-1" java.lang.NullPointerException
	at infy.org.ExampleClient.run(ConnectExceptionExample.java:59)
	at java.lang.Thread.run(Thread.java:722)

Ich hoffe, dieses Beispiel hilft Ihnen zu verstehen, wann java.net.ConnectException von Ihrer Anwendung ausgelöst wird. Wenn Sie Fragen haben, schreiben Sie diese bitte in den Kommentarbereich.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen