2017-01-26 3 views
0

Gemäß dem Beispiel in diesem Link: http://www.javatpoint.com/socket-programmingWie java serverSocket und Client-Socket auf dem gleichen PC interagiert?

Da ich nicht verstehen Port: 6666 ist eine imaginäre oder RAW-Port verwendet Socket-Programmierung zu veranschaulichen. Ich möchte wissen, wie der PC weiß, dass er Server mit Anschluss 6666 hat, nachdem er sowohl myClient.java als auch myServer.java ausgeführt hat.

Auch ich möchte wissen, während Real-Socket-Programmierung die myServer.java muss in realen Server-Standort platziert werden, wenn nicht dann wo? will nur verstehen, wo ein serverSocket Klassenobjekt zu initialisieren! Auf der Serverseite oder auf der Clientseite?

Auch wie Betriebssystem oder PC (allgemein) nach verfügbaren Ports suchen?

Antwort

0

Ihr verbundenes Dokument ist kaputt, lassen Sie mich dennoch ein wenig erklären, wie die Netzwerk-Sockets arbeiten.

Ein Computer verfügt über mehrere Netzwerkschnittstellen. Wenn Sie Windows ausführen, können Sie sie überprüfen, indem Sie ipconfig /all unter Linux/OSX mit ifconfig ausführen. Sie sehen, dass Sie eine Loopback-Schnittstelle mit der IP-Adresse 127.0.0.1 haben. Aus Bequemlichkeit wurde auch beschlossen, dieser Loopback-Schnittstelle einen "Namen" hinzuzufügen, und es wäre localhost. Sie können dies in /etc/hosts Datei überprüfen, wo eine Zuordnung zwischen 127.0.0.1 und localhost existiert.

Sagen, dass ein Computer mit dem Systemkernel eine Route zu localhost auf sich selbst finden kann. Diese Loopback-Schnittstelle ist virtuell und wird im Betriebssystem implementiert, sodass keine Pakete über Ihre Ethernet-Schnittstelle oder WLAN-Karte übertragen werden.

TCP und UDP sind Protokolle, die über IP zum Senden von Daten verwendet werden. TCP stellt über die 3-way handshake eine Verbindung her und der Paketempfang wird vom Server quittiert. UDP ist nicht verbindungsorientiert, daher sendet ein Client Pakete an die Ports, und es werden keine Bestätigungen gesendet. Das ist nur eine große Zusammenfassung.

Wenn Sie einen Port abhören möchten, muss Ihre Anwendung dies dem Betriebssystem mitteilen und wenn die Netzwerkkomponente des Betriebssystems einige Pakete mit dem TCP.dst-Wert 6666 (in Ihrem Fall) empfängt sendet die Payload an Ihre Anwendung. Das Betriebssystem ist verantwortlich für die Bestätigung der Pakete und der gesamten darunterliegenden Kommunikation, die für Sie transparent ist.

Wie Sie sich vorstellen können, kann das Betriebssystem den gleichen Port nur an eine Anwendung binden. Wenn Sie also zweimal einen Webserver starten, schlägt die zweite Ausführung fehl.

Sie können überprüfen, welche Ports auf einem Linux-Rechner mit netstat -l abhören.

Verwandte Themen