LabVIEWForum.de
Daten VIA UDP versenden - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenkommunikation (/Forum-Datenkommunikation)
+---- Thema: Daten VIA UDP versenden (/Thread-Daten-VIA-UDP-versenden)



Daten VIA UDP versenden - Schandmaul - 18.03.2009 11:33

Hallo an alle,

ich muss aus einem Puffer ein Datenpaket lesen, dieses muss ich noch konvertieren und dann VIA UDP
an einen anderen PC schicken.

Jetzt glaube ich zu wissen, dass es dem UDP egal ist (senderseitig), ob die Daten überhaupt irgendwo
angekommen sind, der Sender schickt es einfach nur weg, was damit passiert ist im end effekt egal, ob
sie nun gelesen werden oder nicht spielt keine Rolle (im Prinzip könnte ich die Daten vom Sender wegschicken
und sie über eine definierte Portnummer wieder vom Sender auslesen)?!
Ich weiss, dass die beiden PC's die bei dieser Verbindung eine Rolle spielen im C-Netz laufen, weiter Geräte
sind nicht vorhanden. Wenn ich also dem Sender sage, dass er an die IP 192.168.255.255 schicken soll,
schickt er das Datenpaket doch einfach breitbandig über das ganze C-Netz, insofern sollte es dann doch
keine Rolle mehr spielen, welche IP mein Empfänger hat, da ja eh jeder Kanal mit den selben Daten vom
Sender belegt ist oder?
Die Portnummer muss ich beim Sender dem des Empfängers anpassen? Also der Sender hat natürlich eine
eigene Portnummer, aber ich sage ihm z.B. IP 192.168.255.255 und dann Portnummer xyz, diese Nummer xyz
muss ich beim Empfänger vorher definieren?

Über eine Antwort wäre ich dankbar

Gruß Flo


Daten VIA UDP versenden - rolfk - 19.03.2009 09:54

' schrieb:Hallo an alle,

ich muss aus einem Puffer ein Datenpaket lesen, dieses muss ich noch konvertieren und dann VIA UDP
an einen anderen PC schicken.

Jetzt glaube ich zu wissen, dass es dem UDP egal ist (senderseitig), ob die Daten überhaupt irgendwo
angekommen sind, der Sender schickt es einfach nur weg, was damit passiert ist im end effekt egal, ob
sie nun gelesen werden oder nicht spielt keine Rolle (im Prinzip könnte ich die Daten vom Sender wegschicken
und sie über eine definierte Portnummer wieder vom Sender auslesen)?!
Ich weiss, dass die beiden PC's die bei dieser Verbindung eine Rolle spielen im C-Netz laufen, weiter Geräte
sind nicht vorhanden. Wenn ich also dem Sender sage, dass er an die IP 192.168.255.255 schicken soll,
schickt er das Datenpaket doch einfach breitbandig über das ganze C-Netz, insofern sollte es dann doch
keine Rolle mehr spielen, welche IP mein Empfänger hat, da ja eh jeder Kanal mit den selben Daten vom
Sender belegt ist oder?
Die Portnummer muss ich beim Sender dem des Empfängers anpassen? Also der Sender hat natürlich eine
eigene Portnummer, aber ich sage ihm z.B. IP 192.168.255.255 und dann Portnummer xyz, diese Nummer xyz
muss ich beim Empfänger vorher definieren?

Über eine Antwort wäre ich dankbar

Gruß Flo

Alles ziemlich umständlich beschrieben von Dir. Hast Du Dir die UDP Beispiele in LabVIEW mal angeschaut?

Grundsätzlich ist es wahr dass der UDP Sender einfach mal losbrüllt und wer immer da zuhört kann sich die Message packen. Aber mann kann halt schon eine Adresse beim Senden angeben und dann sollte nur der Computer die Sendung hören der auch diese Adresse hat, ausser er arbeitet im promiscious Mode. Das ist ein Modus wo die Adresse der Daten nicht wichtig ist und alle Packete weitergeleitet werden, aber das unterstützen die normalen Socket Libraries die das IP Protokoll in Deinem System implementieren standardmässig nicht. Dazu braucht man eine speziellen Treiber wie er beispielsweise von Wireshark verwendet wird.

Wenn du ein UDP Packet verschicken willst das von allen möglichen Empfängern gehört werden kann, kannst Du aber die UDP Broadcast Adresse 255.255.255.225 verwenden.

Aber UDP wird normalerweise nicht geroutet, d.h. es wird nur im lokalen Netz verschickt und ganz sicher UDP Broadcasts.

Rolf Kalbermatter


Daten VIA UDP versenden - Schandmaul - 19.03.2009 10:23

Hallo Rolf,

erstmal Danke für die Antwort.

Den "promiscious Mode" benötige ich, so wie ich das Verstanden habe, gar nicht für diese Aufgabe.
Ich nehme einfach die allgemeine Broadcast Addresse. In dem "Netzwerk", welches ich bedienen muss,
befinden sich nämlich nur 2 PC's, wobei mich in diesem Fall nur eine Modifikation des Programmes interessiert,
die Daten aus der neuen Programmstruktur muss ich dann weitersenden (von QL auf DAQ). Also wie du schon vermutet hast
eine rein lokale Sache.
Da du dich mit UDP gut auszukennen scheinst gleich noch eine FrageSmile.
Ich muss ja in dem VI, welches für den Versand der Daten zuständig ist (UDP schreiben),
1. Dateneingang
2. Verbindungs ID
3. Addresse (eben die 255.255.255.255 die ich verwenden werde)
4. Port
5. Verbindungs ID Out
angeben.

Meine Frage bezieht sich speziell auf Nr.4:

Ich kann ja irgendeinen Port zwischen 0 und 65536 (16bit) angeben,
die Frage, die ich mir nun stelle ist, wie sage ich dem anderen (Empfänger), auf welchem
Port er die Daten empfangen soll, oder besser, welchen Port ich freischalten muss?
Und wie mache ich das Überhaupt, ich dachte nämlich das hätte ich in 10 Minuten gemacht,
aber ich weis nicht, wo ich den einzelnen Port freigebe.
Aber ich könnte doch auch einfach einen verwenden, der sowieso schon offen ist, da gibt es doch
bestimmt welche im UDP Netz?

Danke schon mal, für deine AntwortSmile.

Gruß Flo


Daten VIA UDP versenden - Schandmaul - 19.03.2009 11:22

Hab noch was vergessenSmile.

Ich weiss, wie ich bei einem Router, Firewall etc. die Ports freischalten kann, bzw. die geöffneten auslesen kann.
Aber in diesem Fall habe ich nur einen Hub dazwischen hängen, wie mache ich das denn da?
Weil direkt in Window XP ist das ja nicht möglich, also zumindest soweit ich weis, die Ports werden doch von den jeweiligen Programmen fest vordefiniert.


Daten VIA UDP versenden - rolfk - 19.03.2009 11:22

' schrieb:Meine Frage bezieht sich speziell auf Nr.4:

Ich kann ja irgendeinen Port zwischen 0 und 65536 (16bit) angeben,
die Frage, die ich mir nun stelle ist, wie sage ich dem anderen (Empfänger), auf welchem
Port er die Daten empfangen soll, oder besser, welchen Port ich freischalten muss?
Und wie mache ich das Überhaupt, ich dachte nämlich das hätte ich in 10 Minuten gemacht,
aber ich weis nicht, wo ich den einzelnen Port freigebe.
Aber ich könnte doch auch einfach einen verwenden, der sowieso schon offen ist, da gibt es doch
bestimmt welche im UDP Netz?

Danke schon mal, für deine AntwortSmile.

Gruß Flo

Schau Dir doch mal die UDP Beispiele an! Sender und Empfänger müssen sich beide über den Port einig sein. Es ist in etwa so wie bei der Briefbesorgung. Die IP Adresse ist die Hausadresse, und die Portnummer ist ein spezifischer Briefkasten im Haus.
Der Sender lässt den Brief in einen der Briefkästen werfen und der Empfänger schaut auch nur in einem davon. In welchem sagst Du ihm mit UDP Open und er muss dann natürlich auch in einer Loop mit UDP Read darauf warten, dass was reinkommt (regelmässig nachschauen dass da was ist). Im Gegensatz zu TCP sieht der Sender aber nicht ob die Message von einem, 1000 (bei Broadcast) oder gar keinem Empfänger gelesen wurde.

Der Briefkasten könnte ja abmontiert sein und der Pöstler wirft die Sendung dann einfach in den nächsten Mülleimer (bei Weise von Vergleich) oder der Empfänger ist umgezogen oder verstorben und schaut n icht mehr nach. Ein Broadcast ist dann eine Massenpostwurfsendung aber das hinkt etwas weil diese in diesem Beispiel halt nur an den x-ten Briefkasten in jedem Haus zugestellt würde.

Rolf Kalbermatter


Daten VIA UDP versenden - Schandmaul - 19.03.2009 12:20

Danke, hat mir sehr geholfen.

Gruß Flo