Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#15

AW: Client-Server Programme auf Terminalserver ausführen

  Alt 3. Jul 2018, 20:37
Was ich allerdings nicht verstehe: sendet der Server Daten an den Client über diesen zweiten Port? Falls ja, warum verwendet der Server nicht den Port mit dem sich der Client zum Senden verbindet, auch in die Gegenrichtung? Bei TCP/IP sind Ports bidirektional, der Server kann Daten über den gleichen Port auch an den Client senden, parallel zum Empfangen von Daten des Clients. (Genau wie man mit einer Telefonleitung Sprechen und Hören kann)
Aber der Server kann doch nicht auf demselben Port senden und empfangen zur gleichen Zeit, oder?

Ein Port ist keine Verbindung oder ein "Kanal" über den Daten gesendet werden, das ist ein Mißverständnis. Die Portnummer ist nur ein Bestandteile der Verbindungsidentifikation.

Die Verbindung ist definiert über vier Bestandteile, die IP-Adresse von Server und Client und die Portnummern beider Seiten. Der Serverport ist dabei konstant und muss dem Client bekannt sein wie die IP Adresse, der Client-Port wird automatisch vom Betriebssystem zugewiesen.

Beispiel: Server "10.2.12.8:80" <-> Client "10.2.12.13:65535" identifiziert eine Verbindung zwischen den Netzwerkadaptern mit IP 10.2.12.8 und 10.2.12.13 wobei der Server den Port 80 (HTTP) verwendet und der Client den vom Betriebssystem dynamisch zugewiesenen Port 65535. (Link)

Man muss dem Client also für das das Empfangen von Daten keinen weiteren Port zuweisen. Dies ist eine grundlegende Eigenschaft von TCP/IP: sobald die Verbindung hergestellt ist, sind beide Seiten (Peers) völlig gleichberechtigt. Die Verbindung hat zwei Streams, einen aus dem gelesen werden kann und einem in den geschrieben werden kann. Je nach Client-Bibliothek, z.B. Indy, geht das problemlos auch aus zwei verschiedenen Threads - der Lesethreads liest kontinuierlich aus dem Input-Stream, der Schreibthread schreibt falls neue Daten vorhanden sind in den Output Stream.

(p.s. ich hoffe ich habe den Konfigurationsbildschirm nicht falsch interpretiert: ich nahm an, dass der Port zum Empfangen für einen TCP Server, der im Client läuft, benutzt wird.)
Michael Justin

Geändert von mjustin ( 3. Jul 2018 um 20:51 Uhr)
  Mit Zitat antworten Zitat