Detaillierte Erläuterung des Implementierungsprozesses der ServerSocket-Standard-IP-Bindung

Detaillierte Erläuterung des Implementierungsprozesses der ServerSocket-Standard-IP-Bindung

Wenn der Server während der Entwicklung gestartet werden muss, wird beim lokalen Testen der Port direkt geschrieben, und in der tatsächlichen Umgebung muss auch die zu bindende IP angegeben werden.

Da der Server manchmal über mehr als eine Netzwerkkarte verfügt und unser System über die angegebene IP und den angegebenen Port kommunizieren muss, müssen die vom Server verwendete IP und der Port in der Konfigurationsdatei definiert werden.

Wenn also beim normalen Testen keine IP angegeben ist, wo wird ServerSocket dann gebunden?

In diesem Fall bindet der Server diesen Port an 0.0.0.0, das heißt, er bindet ihn an alle IPs und kann auf jeder IP Anfragen empfangen. Was 0.0.0.0 ist, werde ich hier nicht erklären.

Das Folgende ist ein Testprogramm. Durch das folgende Programm können Sie sehen, wie die Situation ist:

Pakettest;
importiere java.net.InetSocketAddress;
importiere java.net.ServerSocket;
importiere java.net.Socket;
öffentliche Klasse Test {
	öffentliche statische void main(String[] args) wirft Exception {
		SocketClient-Client = neuer SocketClient();
		neuer Thread(Client).start();
		
		ServerSocket serverSocket = neuer ServerSocket();
		serverSocket.bind(neue InetSocketAddress(8888));
// serverSocket.bind(neue InetSocketAddress("127.0.0.1",8888));
// serverSocket.bind(neue InetSocketAddress("192.168.1.100",8888));
		System.out.println(serverSocket.toString());
		serverSocket.accept();
	}
}
Klasse SocketClient implementiert Runnable{
	öffentliche Leere ausführen() {
		versuchen {
			Thread.Schlaf(2000);
			versuchen {
				Socket socket = neuer Socket("127.0.0.1", 8888);
				System.out.println("127.0.0.1 Erfolg" + socket.toString());
			} Fang (Ausnahme e) {
				System.err.println("127.0.0.1 fehlgeschlagen");
			}
			versuchen {
				Socket socket = neuer Socket("192.168.1.100", 8888);
				System.out.println("192.168.1.100 erfolgreich" + socket.toString());
			} Fang (Ausnahme e) {
				System.err.println("192.168.1.100 fehlgeschlagen");
			}
		} Fang (Ausnahme e) {
			e.printStackTrace();
		}
	}
}

Das Druckergebnis zu diesem Zeitpunkt ist:

ServerSocket [Adresse=0.0.0.0/0.0.0.0,Port=0,lokalerPort=8888]
127.0.0.1 Erfolg Socket[addr=/127.0.0.1,port=8888,localport=59213]
192.168.1.100 Erfolg Socket[addr=/192.168.1.100,port=8888,localport=59214]

Druckergebnisse bei Verwendung von 127.0.0.1:

ServerSocket[Adresse=/127.0.0.1,Port=0,LokalerPort=8888]
127.0.0.1 Erfolg Socket[addr=/127.0.0.1,port=8888,localport=59416]
192.168.1.100 ist fehlgeschlagen

Druckergebnisse bei Verwendung von 192.168.1.100:

ServerSocket[Adresse=/192.168.1.100,Port=0,LokalerPort=8888]
127.0.0.1 ist fehlgeschlagen
192.168.1.100 Erfolg Socket[addr=/192.168.1.100,port=8888,localport=59429]

Sie können sehen, dass die Standardbindung 0.0.0.0 ist. Zu diesem Zeitpunkt können Sie jede IP verwenden, die diesem Computer zugeordnet werden kann, um auf Port 8888 zuzugreifen.

Dies ist natürlich kein Nachweis für den Einsatz von zwei Netzwerkkarten, da ich nach wie vor auf einer Netzwerkkarte spiele. Wenn es die Bedingungen erlauben, können Sie einen kleinen Test auf einer Klingenmaschine durchführen.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Entwurfsoptimierungsschema für ServerSocket in der Java-Netzwerkkommunikation
  • Beispielerklärung basierend auf der Socket-Klasse und der ServerSocket-Klasse
  • JAVA-NIO Socket/ServerSocket-Kanal (ausführliche Erklärung)
  • [Java] Detaillierte Erläuterung der Socket- und ServerSocket-Studiennotizen
  • Konstruktionsmethoden und API der Klassen Socket und ServerSocket

<<:  Unterschiede zwischen MySQL CHAR und VARCHAR beim Speichern und Lesen

>>:  Vue3 kapselt seine eigene Paging-Komponente

Artikel empfehlen

MySQL-Paket für Abfrage ist zu groß – Problem und Lösung

Problembeschreibung: Fehlermeldung: Ursache: com....

So ändern Sie den MySQL-Zeichensatz

1. Überprüfen Sie den Zeichensatz von MySQL Varia...

Das WeChat-Applet implementiert feste Header- und Listentabellenkomponenten

Inhaltsverzeichnis brauchen: Funktionspunkte Rend...

Verwenden Sie CSS, um die Breite von INPUT in TD festzulegen

Als ich kürzlich mit C# ein Webprogramm erstellte,...

Sieben Möglichkeiten zur Implementierung der Array-Deduplizierung in JS

Inhaltsverzeichnis 1. Verwenden von Set()+Array.f...

Der Unterschied und die Einführung von ARGB, RGB und RGBA

ARGB ist ein Farbmodus, also der RGB-Farbmodus mi...

So verwenden Sie Docker zum Erstellen eines privaten pypi-Repositorys

1. Konstruktion 1. Bereiten Sie die Datei htpassw...

Detaillierte Erklärung, wie MySQL Phantom-Lesevorgänge löst

1. Was ist Phantomlesen? Wenn bei einer Transakti...

MySQL-Operator-Zusammenfassung

Inhaltsverzeichnis 1. Arithmetische Operatoren 2....

Detaillierte Erklärung der Verwendung und Erfahrung mit tinyMCE

Detaillierte Erklärung der tinyMCE-Verwendung Ini...

Erstellen eines Redis-Clusters auf Docker

Inhaltsverzeichnis 1. Ziehen Sie das Bild 2. Erst...

Der Kernprozess der NodeJS-Verarbeitung einer TCP-Verbindung

Vor ein paar Tagen habe ich mit einem Freund etwa...