Broadcast senden?



  • Hallo!

    Weiß jemand wie man in C/C++/WinAPI einen Broadcast senden kann?
    Mein Client soll eine Auflistung meiner Server im Netzwerk ausgeben.



  • Ein Broadcast wird automatisch gesendet, wenn du ein UDP !!!!!
    Paket an die höchste(bittweise gesehen, und an der Netzwerkmaske ablesbar) IP Adresse sendest, die in dienem Teilnetz erlaubt ist.

    Beispiel 1
    Netzwerkmaske 255.255.255.0
    Du benutzt IP Adressen 192.168.0.0 bis 255
    Dann ist 192.168.0.255 die Broadcastadresse.

    Beispiel2
    Netzwerkmaske 255.255.255.192
    Du benutzt IP Adressen 192.168.0.0 bis 63
    Dann ist 192.168.0.63 die Broadcastadresse.

    Nochmal der Hinweis: NUR UDP PAKETE KÖNNEN GEBROADCASTET WERDEN KEINE TCP !!!!

    (Es sei denn man baut sich das TCP Protokoll selbst, aber wer macht das schon)



  • Anmerkung: Hubs senden Broadcasts oft nicht weiter, bei switches und routern kann man einstellen, ob sie es tun

    Denn wenn man die Logick der Beispiele fortsetzt währe 255.255.255.255
    die Broadcastadresse für das gesamte Internet 😉
    Aber leider leiten die Internetrouter broadcasts oft nicht weiter und
    255.255.255.255 mit Sicherheit nicht 😞



  • schlecht; ich hab bisher nur mit TCP/IP gearbeitet...
    läuft das mit UDP viel anderst? gutes Tutorial/Beispiel?

    noch eine Frage zur theorie:
    wo spielt in bsp1 die netzwerkmaske mit?
    was, wenn man in bsp2 nicht weiß, wie viele adressen es gibt?

    mfg (c)h





  • aahhhmm...

    wer den letzten punkt (7. Verwendung von connect() bei UDP) liest, kann mir vielleicht erklären was jetzt der Unterschied zwischen TCP und UDP ist?
    Bei 7. werden doch die selben befehle Wie beim TCP verwendet......



  • UDP ist eigentlich wirklich fast das selbe.
    Mit dem Unterschied, dass bei UDP nicht sichergestellt wird, ob dein Paket angekommen ist oder nicht.
    Deswegen geht da auch ein Broadcast. Du schickst einfach mal Pakete an alle aber das UPD verlangt keine Rückmeldung von allen, dass es angekommen ist. Entweder der Empfänger hat es - oder nicht 😉



  • chille07 schrieb:

    wer den letzten punkt (7. Verwendung von connect() bei UDP) liest, kann mir vielleicht erklären was jetzt der Unterschied zwischen TCP und UDP ist?
    Bei 7. werden doch die selben befehle Wie beim TCP verwendet......

    'connect' bei tcp baut aktiv eine verbindung auf. dabei werden zwischen beiden rechnern pakete ausgetauscht (SYN, SYNACK, ACK) bis die verbindung steht oder ein timeout greift.

    'connect' bei udp sendet nix. dabei werden nur ein paar interne variablen der socket-api gesetzt (ip-adresse und portnummer des anderen rechners), die dann bei 'recv' und 'send' verwendet werden.


Log in to reply