Senden broadcast-Nachricht von allen Netzwerk-Adaptern
Ich habe eine Anwendung, die sendet broadcast-Nachrichten und wartet auf Antwort-Pakete. Unten ist das code-snippet.
m_socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
m_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);
m_socket.Bind(new IPEndPoint(IPAddress.Any, 2000));
m_socket.BeginSendTo(
buffer,
0,
buffer.Length,
SocketFlags.None,
new IPEndPoint(IPAddress.Broadcast, 2000),
Callback),
null
);
Wenn ich die Anwendung ausführen, die broadcast-Nachricht wurde nicht gesendet. Auf meinem Rechner habe ich drei Netzwerkkarten. Zu meinem lokalen Netzwerk-adapter und die beiden anderen sind für VMWare virtual network Adapter. Wenn ich meine Anwendung, die ich sehen kann (mit wireshark Netzwerk-capture), die die broadcast-Nachricht gesendet wird von einem der VMWare-Netzwerk-Adapter.
Ich würde gerne den code ändern, so dass die broadcast-Nachricht gesendet werden, die alle Netzwerk-Adapter auf dem pc. Was ist der beste Weg, das zu tun?
- Konnten Sie Ihr problem lösen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die folgenden verwenden, um alle Ihre IP-Adressen (und viel mehr). So können Sie die Liste Durchlaufen und binden (wie Jon B gesagt) zu einer bestimmten IP-Adresse, die Sie wollen, wenn Sie senden Ihre multicast.
Beim Aufruf von Bind(), Sie sind die Einstellung der lokalen IP-Endpunkt. Anstelle der Verwendung von-IP-Adresse.Jeder, verwenden Sie die IP-Adresse der Netzwerkkarte, die Sie senden wollen, aus. Sie tun müssen diese getrennt für jede NIC.
Überprüfen Sie diese http://salaam.codeplex.com/
Mein Freund und ich entwickelte eine Klassenbibliothek namens Salaam. laden Sie den Quellcode herunter, oder verwenden Sie die binaries (.dll) zu verwenden.
Können Sie IP-Adresse.Alle bei der Konstruktion der tcpListener. Das binden des tcp Listeners an allen Schnittstellen