У меня есть компьютер с несколькими сетевыми картами, и метод отправки UDPClient постоянно дает сбой. Вот код:
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);
}
}
ПОРТ = 5000 и IP = 224.5.6.7, так что все должно быть в порядке. Основная проблема в том, что я просто не могу пройти строку recvSock.Receive(). Я вижу пакеты, поступающие через wirehark, но код их просто не обрабатывает...
Мысли? Заранее спасибо!
Дэн
РЕДАКТИРОВАТЬ: я могу подтвердить, что проблема возникает из-за нескольких сетевых адаптеров --- код отлично работает с одним сетевым адаптером. Раскомментирование строки SetSocketOption должно позволить ей работать с несколькими сетевыми адаптерами, но все равно не получается... мысли?