squeaker
Erfahrenes Mitglied
Hi,
ich habe folgendes Problem:
Ich habe in dem Rechner mehrere Netzwerkkarten (mit verschiedenen Netzen/Netzmasken). Ich möchte jetzt in dem einen Netz auf eine Multicastgroup hören. Dazu habe ich folgendes zusammengeschrieben:
wie man an dem Code sehen kann, möchte ich, dass der UDPReceiver im 172.20er Netz hört und nicht im 10er (mein anderes). Daher habe ich auch die passenden Local/Remote Endpoints übergeben. Allerdings meldet Wireshark, dass das Anmeldetelegramm für die Multicast-Group an das 10er Netz rausgeht und in den ReceiveCallback laufe ich nie hinein. Kann mir jemand sagen, wass ich falsch mache?
ich bin einen Schritt weiter - jetzt geht die Anmeldung über die richtige Netzwerkkarte raus. Dazu musste ich folgendes ändern:
ich hab also das JoinMulticastGroup(...) manuell über socket.Client.SetSocketOption erledigt. Aber empfangen tue ich immer noch nichts.
ich habe folgendes Problem:
Ich habe in dem Rechner mehrere Netzwerkkarten (mit verschiedenen Netzen/Netzmasken). Ich möchte jetzt in dem einen Netz auf eine Multicastgroup hören. Dazu habe ich folgendes zusammengeschrieben:
Code:
public class Receiver
{
private UdpClient socket;
private bool messageReceived;
public bool connect(string Adress)
{
if (socket != null)
{
socket.Close();
}
IPAddress ipadresse;
IPAddress.TryParse(Adress, out ipadresse);
socket = new UdpClient(new IPEndPoint(ipadresse,5001));
socket.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
IPAddress.TryParse("172.20.0.21", out ipadresse);
socket.Connect(ipadresse, 5001);
IPAddress.TryParse("228.5.6.7",out ipadresse);
socket.JoinMulticastGroup(ipadresse,10);
socket.BeginReceive(new AsyncCallback(ReceiveCallback), null);
messageReceived = false;
while (!messageReceived)
{
Thread.Sleep(100);
}
return true;
}
public void ReceiveCallback(IAsyncResult ar)
{
Console.WriteLine("Datagram received");
messageReceived = true;
}
}
wie man an dem Code sehen kann, möchte ich, dass der UDPReceiver im 172.20er Netz hört und nicht im 10er (mein anderes). Daher habe ich auch die passenden Local/Remote Endpoints übergeben. Allerdings meldet Wireshark, dass das Anmeldetelegramm für die Multicast-Group an das 10er Netz rausgeht und in den ReceiveCallback laufe ich nie hinein. Kann mir jemand sagen, wass ich falsch mache?
ich bin einen Schritt weiter - jetzt geht die Anmeldung über die richtige Netzwerkkarte raus. Dazu musste ich folgendes ändern:
Code:
IPAddress ipadresse, mcadresse;
IPAddress.TryParse(Adress, out ipadresse);
socket = new UdpClient(new IPEndPoint(ipadresse,5001));
socket.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
IPAddress.TryParse("228.5.6.7",out mcadresse);
//socket.JoinMulticastGroup(ipadresse,10);
MulticastOption option = new MulticastOption(mcadresse, ipadresse);
socket.Client.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, option);
socket.BeginReceive(new AsyncCallback(ReceiveCallback), null);
Zuletzt bearbeitet: