Mam komputer z wieloma kartami NIC - i metoda wysyłania UDPClient ciągle się nie udaje. Oto kod:UDPClient Multicast receive kończy się niepowodzeniem na komputerze z wieloma kartami NIC
private static void receiveData()
{
recvSock = new UdpClient(PORT);
//recvSock.Client.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastInterface, mainInterface);
recvSock.JoinMulticastGroup(IPAddress.Parse(IP), 50);
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0);
while (true)
{
byte[] data = recvSock.Receive(ref iep);
// Do not include messages from us
if (myIPs.Contains(iep.Address))
continue;
string stringData = Encoding.ASCII.GetString(data, 0, data.Length);
Console.WriteLine("received: " + stringData);
}
}
PORT = 5000 i IP = 224.5.6.7, więc powinno być OK. Głównym problemem jest to, że po prostu nie mogę ominąć linii recvSock.Receive(). Widzę pakiety przychodzące przez wireshark - ale kod po prostu ich nie przetwarza ...
Myśli? Z góry dziękuję!
Dan
EDIT: Mogę potwierdzić, że wielo- NIC powoduje problem --- kod działa poprawnie z jednym NIC. Odkomentowanie linii SetSocketOption powinno pozwolić jej działać z wieloma kartami sieciowymi, ale nadal nie działa .... myśli?
Ta aplikacja "klient" [komputer] ma wiele kart NIC lub serwer, z którym łączy się wiele kart NIC? –
Ponieważ mam ten sam problem, jestem gotów potwierdzić: "aplikacja klienta [komputer] ma wiele kart sieciowych". Zazwyczaj klient dotyczy serwerów znajdujących się w dowolnej z wielu sieci NIC. Serwer z wieloma kartami NIC jest ważny tylko wtedy, gdy klient widzi serwer _same_ za pośrednictwem wielu kart sieciowych po stronie klienta. –
@Dan Czy znalazłeś sposób na obejście problemu? Mam ten sam problem. – J4N