Gewusst wie: empfangen von UDP-broadcast-Pakete auf einem BESTIMMTEN interface?
Auf dem iPhone habe ich einen UDP-socket gebunden und es an der WLAN-Schnittstelle. Ich konnte SO_BROADCAST
und ich bin in der Lage zum senden von broadcast-Pakete zu dem Netzwerk (bestätigt durch einen client, der auf meinem notebook.) Aber der UDP-socket auf dem iPhone nicht in der Lage ist zum empfangen von broadcast-Paketen.
Meiner Meinung nach ist das ein kernel-Fehler, weil nicht erlaubt, einen socket mit SO_BROADCAST
aktiviert zu erhalten, broadcast-Paket, ist eine schlechte design-Entscheidung.
Das problem genauer beschrieben wird hier und hier. Die beliebteste Lösung für dieses problem ist die Bindung an INADDR_ANY
. Allerdings wäre es schön, in der Lage zu binden, einen UDP-socket, um nur eine Schnittstelle, während immer noch empfangen von broadcast-Paketen! Gibt es wirklich keine Möglichkeit, dies zu erreichen?
(Wenn ich bind a socket to 192.168.1.7 auf ein class C Netz (/24), sollte es akzeptieren gesendeten Pakete zu 192.168.1.7 und gesendeten Pakete zu 192.168.1.255!)
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
pls überprüfen Sie den link unten kann es sehr hilfreich.
Empfangen von udp-broadcast-Pakete ios
iPhone UDP-broadcast-und-Antwort
iOS UDP-broadcast vs. PHP-UDP-broadcast
https://github.com/robbiehanson/CocoaAsyncSocket
getifaddrs
und dannbc_addr=ip_addr | ( ~netmask)
). Nutzung auf eigene Gefahr...