Entwickler-Ecke

Internet / Netzwerk - Port-Frage zu dem UDPSockUtil von Narses


PCRamirez - Di 04.08.09 11:47
Titel: Port-Frage zu dem UDPSockUtil von Narses
Hallo Zusammen!

Ich habe mich mal mit der Komponente TUdpSockUtil von Narses befasst und in ein Testprojekt eingebunden.

So wie ich das aus dem Sourcecode verstehe, wird das instanziierte Objekt an den PORT gebunden.
Ich frage deshalb, weil ich eine Verbindung mit mehreren anderen Computern im selben Subnet aufnehmen will.
Nun möchte ich die eingehenden Nachrichten schon mal vorab filtern indem ich für jeden Partner eine eigene Instanz mit der spezifischen Portnummer erzeuge. Dafür muss natürlich gewährleistet sein das jede Instanz auch nur an dem eigenen PORT lauscht! Ist das denn so?
Nimmt ein mit einer Portnummer definierter Client auch Pakete von anderen Ports entgegen? Wenn Ja, dann kann ich eh nur eine Client-Instanz kreieren und muss nach eingehenden IP-Adressen filtern! Ich würde es aber lieber auf dem zuerst genanten Weg machen, also für jeden der ca. 10 definierten Ports ein eigener Client!

An dieser Stelle schon mal Danke für euer Interesse!
(Code habe ich mal nicht angehangen, da es mehr eine Grundsatzfrage ist!)

Gruß
PCRamirez


Narses - Di 04.08.09 14:44

Moin und :welcome: im Forum!

user profile iconPCRamirez hat folgendes geschrieben Zum zitierten Posting springen:
So wie ich das aus dem Sourcecode verstehe, wird das instanziierte Objekt an den PORT gebunden.
Ja, das ist so.

user profile iconPCRamirez hat folgendes geschrieben Zum zitierten Posting springen:
Ich frage deshalb, weil ich eine Verbindung mit mehreren anderen Computern im selben Subnet aufnehmen will.
Dir ist schon klar, dass UDP verbindungslos ist? ;)

user profile iconPCRamirez hat folgendes geschrieben Zum zitierten Posting springen:
Nun möchte ich die eingehenden Nachrichten schon mal vorab filtern indem ich für jeden Partner eine eigene Instanz mit der spezifischen Portnummer erzeuge. Dafür muss natürlich gewährleistet sein das jede Instanz auch nur an dem eigenen PORT lauscht! Ist das denn so? Nimmt ein mit einer Portnummer definierter Client auch Pakete von anderen Ports entgegen?
Nein, das ist aber generell bei IP so definiert und hat nix mit UDP oder TCP zu tun. :?

user profile iconPCRamirez hat folgendes geschrieben Zum zitierten Posting springen:
Wenn Ja, dann kann ich eh nur eine Client-Instanz kreieren und muss nach eingehenden IP-Adressen filtern! Ich würde es aber lieber auf dem zuerst genanten Weg machen, also für jeden der ca. 10 definierten Ports ein eigener Client!
Klar kann man das machen, allerdings verursacht das relativ hohen Ressourcenverbrauch im Betriebssystem (IP-Stack); OK, bei 10 Sockets jetzt sicher nicht kritisch, aber grundsätzlich sind hier die Ressourcen nicht unbegrenzt verfügbar (gerade in Win-Client-Versionen). Deshalb frage ich mich, was das für einen Sinn haben soll. :gruebel: Wenn du nicht gerade maximalen Datendurchsatz als Ziel hast, dann ist das keine gute Idee. Das Filtern nach IP im Programm ist sicher in den meisten Anwendungsfällen die bessere Variante (und auch kein Performance-Problem, das lässt sich sehr effizient abwickeln). :idea:

cu
Narses


PCRamirez - Di 04.08.09 15:16

Hallo Narses!

Erst einmal Danke für den herzlichen Empfang!

Es geht im groben um eine Kommunikation zwischen einem PC und 3 - 10 Gegenstationen.
Ich werde mal die Variante mit den 10 Clients versuchen. Falls es tatsächlich Performance-Probleme gibt, kann ich ja mal den anderen Weg gehen.

Das mit dem verbindungslos ist schon klar. ;-)
Die 10-Client-Variant kam mir deshalb in den Sinn, da die Clients sehr wahrscheinlich in unterschiedlichen Zeitabschnitten pollen, der PC bekommt also so im Extremfall den Buffer nur von einer Gegegenstation gefüllt. Um das zu umgehen will ich autake Instanzen erzeugen. Und jeder horcht nur an seinem Port.
Vielleicht ist das auch der falsche Ansatz, aber ich bin leider nicht so firm in der Socket-Programmierung.(Weshalb ich tierisch froh bin das es so Socket-Gurus wie dich gibt)

Ergänzung
Bei den Gegenstationen handelt es sich um SPS'en welche unter umständen alle 50ms pollen. Ich möchte mich von einem bestehenden Profibus trennen und so wenig wie möglich modifizieren.
Ergänzung Ende

Danke nochmal für deine rasche Antwort!

Mögen die Bytes mit dir sein!

PCRamirez