Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Client-Seitiger Port bei TClientSocket (https://www.delphipraxis.net/78449-client-seitiger-port-bei-tclientsocket.html)

tgoessi 5. Okt 2006 09:26


Client-Seitiger Port bei TClientSocket
 
Hallo Zusammen

Wenn ich mit TClientSocket eine Verbindung aufbaue, kann ich zwar den Server-Port angeben, jedoch nicht den client-seitigen Port, über den die Verbindung die lokale Maschine verlässt.
Jedes Mal, wenn ich eine Verbindung öffne, verwendet Windows lokalseitig einen anderen Port.
Speziell mit dem Betrieb einer Firewall können damit Probleme auftreten, da z.B. für das Verlassen eines Netzwerks von innerhalb der Firewall nur bestimmte Ports geöffnet sind.

Gibt es eine Möglichkeit bei TClientSocket beim Öffnen einer Verbindung die lokale Portnummer anzugeben, damit die Verbindungen nur von diesem Port aus geöffnet werden?

Danke und Gruss
Tom

flossinger 5. Okt 2006 14:13

Re: Client-Seitiger Port bei TClientSocket
 
Hallo Tom,

für tclientsocket so wie für tserversocket hab ich noch nirgends eine vollständige Dokumentation gesehen. Darum kann ich nicht ausschliessen, dass es so etwas gibt. Gesehen habe ich es noch nicht und es ist auch nicht üblich.

Bei einem Client kannst du nicht wissen, ob das gewünschte Port zur Verfügung steht. Für andere Clients, wie Browser werden auch ganze Portbereiche verwendet und bei Bedarf an der Firewall erlaubt.

Grüsse,
der flossinger

tgoessi 5. Okt 2006 16:17

Re: Client-Seitiger Port bei TClientSocket
 
Hallo

Heisst das im Prinzip auch, dass man als Client immer nur (gleichzeitig) von einem ausgehenden Port eine einzige Verbindung aufbauen kann.
Also wenn ein ClientSocket eine ausgehenden Verbindung auf Port 1005 öffnet, man nicht gleichzeitig eine zweite ClientSocket auf 1005 öffnen kann.

Gruss
Tom

Muetze1 5. Okt 2006 16:58

Re: Client-Seitiger Port bei TClientSocket
 
Dies kann man grundsätzlich nicht. Wenn der Port von einem geöffnet wurde (Clientseitig) um eine Verbindung zu einem anderen Gegenüber herzustellen, dann kannst du diesen Port nicht für einen weiteren Socket nutzen um darüber eine Verbindung zu einem anderen herzustellen.

flossinger 5. Okt 2006 21:00

Re: Client-Seitiger Port bei TClientSocket
 
Im Allgemeinen ist das so. Wenn man sich dafür interessiert, kann man noch genauer hinsehen. Die Adressierung der Pakte erfolgt über das Socket. Socket bedeutet Anschluss oder Steckdose. Und das Socket setzt sich zusammen aus Adresse und Port. Also beispielsweise '1.2.3.4:99'. Wenn jetzt zwei tclientsockets über das selbe socket adressiert wären, könnte das System nicht entscheiden, an welches der socketobjekte ein Paket gerichtet ist.
Um jetzt ganz genau zu sein, könnte eine Maschine 2 nics besitzen. Gateways sind solche Maschinen. Wenn jede nic eine andere adresse hat, können zwei tclientsockets die selbe portnummer verwenden, wenn sie verschiedene Adressen verwenden. Sie kommunizieren dann doch wieder über zwei verschiedene sockets. Beispielsweise über 1.2.3.4:99 auf der ersten network interface card wird mit dem Firmennetz kommuniziert und über 1.2.3.5:99 auf der zweiten nic wird mit dem Internet kommuniziert.

grüsse,
der flossinger

DelphiSourcer 5. Okt 2006 21:21

Re: Client-Seitiger Port bei TClientSocket
 
Hallo!

Im Delphi-Treff, einer anderen Delphi Internet-Seite unter Tutorials gibt es ein Handbuch zu ClientSocket und ServerSocket mit Beispielprogramm. Unter Google "Delphi Treff" eingeben, dann nach Suche den ersten Link anklicken-> dort Tutorials-> Web-Tutorials-> WinSocket.

Viel Erfolg wünscht

DelphiSourcer

flossinger 6. Okt 2006 04:17

Re: Client-Seitiger Port bei TClientSocket
 
Das ist aber eine sehr bescheidene Information, was du ein 'Handbuch' nennst. Solche informationsbruchstücke gibt es in rauen Mengen im Netz. Mit ein wenig Erfahrung kann man mehr über die Sockets herausfinden. Was ich in Jahren nicht angetroffen habe, ist eine vollständige Dokumentation.

der Flossinger

oki 6. Okt 2006 07:17

Re: Client-Seitiger Port bei TClientSocket
 
Zitat:

Zitat von tgoessi
Wenn ich mit TClientSocket eine Verbindung aufbaue, kann ich zwar den Server-Port angeben, jedoch nicht den client-seitigen Port, über den die Verbindung die lokale Maschine verlässt.
Jedes Mal, wenn ich eine Verbindung öffne, verwendet Windows lokalseitig einen anderen Port.

Hi tgoessi,

ich war bis heute der Meinung, dass ich beim öffnen einer Clientverbindung auf einen Serverport genau diesen auch benutze. Somit sehe ich das so, dass wenn ich einen Server auf dem Port 1005 connecte der Client diesen auch benutzt.

Wenn ich hier was falsch verstanden hab, sorry.

Gruß oki

tgoessi 6. Okt 2006 07:57

Re: Client-Seitiger Port bei TClientSocket
 
Zitat:

ich war bis heute der Meinung, dass ich beim öffnen einer Clientverbindung auf einen Serverport genau diesen auch benutze. Somit sehe ich das so, dass wenn ich einen Server auf dem Port 1005 connecte der Client diesen auch benutzt.
Soviel ich weiss funktioniert das nur serverseitig so, d.h. mit TServerSocket kann man den Port 1005 abhorchen. Wird beim TClientSocket 1005 eingegeben, erfolgt die Verbindung auf Port 1005 des Servers. Ich weiss aber nicht, wie man definieren kann, auf welchem Port die Verbindung client-seitig verlässt. Offenbar ist dies auch gar nicht möglich, da das OS dies automatisch wählt.

Tom

oki 6. Okt 2006 11:51

Re: Client-Seitiger Port bei TClientSocket
 
klar,

aber wenn der Server dann antwortet passiert das doch auf dem Port den der Server definiert. In meinem Firewall kann ich doch die Kommunikation auf den entsprechenden Port eingrenzen und die gegenseitige Kommunikation erfolgt dann auch auf diesem Port. Ich war bis jetzt der Meinung, dass eine antwort eines Servers an einen angemeldeten Client über genau den spezifizierten Port erfolgt und eine Identifikation über die ID des Clients erfolgt. Wie gesagt, dass waren alles meine Annahmen. Nachgelesen habe ich das auch nirgens.

Gruß oki


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz