Einzelnen Beitrag anzeigen

Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#29

Re: [idUDPClient] Broadcast auf allen Interfaces raus senden

  Alt 16. Mär 2009, 22:21
Zitat von gsh:
Aber ich werde ein paar andere P2P Programm analysieren.
Angefangen hab ich mal mit Trillian ... dieses hat ein Lan Plugin. Folgendes Packet hab ich mitdumpen können:
Code:
192.168.0.56   224.0.0.251   MDNS   Standard query PTR _presence._tcp.local, "QM" question AAAA nbalex.local, "QM" question
Auf jeden Adapter sendet er mit der richtigen Source-IP. Warum kann das bei UDP nicht auch so einfach sein?

Mal eine blöde Frage kann das ein Fehler der Winsocks sein das der UDP Broadcast so Problematisch gesendet wird oder hat es irgendeinen guten Grund warum er mit der "falschen" Source-IP sendet?
Er sendet nicht mit der falschen IP. Der Broadcast ist vollkommen richtig. Es wird die Priorität der Adapter vom System berücksichtigt (1. Seite hier mit den Routen). Das sollte und muß bei jedem anderen System auch so sein - unabhängig vom Betriebssystem.

Trillian sendet keinen Broadcast, sondern einen mDNS (Multicast DNS). Apple Bonjour macht das gleiche und viele andere (MS) auch. Lies Dir mal http://files.multicastdns.org/draft-...lticastdns.txt durch. Insbesondere was die Gruppe, den TTL und die Probleme mit miskonfigurierten Hosts (Dein nicht-routender-mehrfach-IP-PC) etc. angeht. Auch in Bezug auf Abschnitt 15. "Considerations for Multiple Interfaces" steht da einiges zu der Problematik. Gerade was Laptops mit LAN und WLAN-Schnittstellen angeht. Diese könnten u.U. überbrückt sein und würde Millisekunden später auf dem anderen Adapter als UDP/mDNS Multicast auftauchen.

Für solche Multicasts gibt es in Indy den IPMCastServer und Client. Ich würde mal probieren, darüber etwas zu erreichen. Bei IPMCastServer mußt Du aber wieder die Bound-IP für den Ausgangsadapter festlegen (sonst vom System automatisch).

Aber ein fertige, kostenlose Komponente die das alles für Dich erledigt kenne ich nicht. Wie meine Links oben Zeigen, läßt sich hiermit gutes Geld verdienen und es verschenkt niemand.

Ich empfehle wirklich mal in die Sourcen von irgendwelchen P2P Implementationen zu sehen und die Logik für die mDNS/Broadcasts-Konnektivität entsprechend zu adaptieren. Dafür muß man ja kein C++ Guru sein

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat