У меня есть компьютер с несколькими сетевыми адаптерами, а метод отправки UDPClient постоянно терпит неудачу. Вот код:Ошибка приема многоадресной передачи 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);
}
}
PORT = 5000 и IP = 224.5.6.7, так что все должно быть в порядке. Основная проблема заключается в том, что я просто не могу пройти мимо строки recvSock.Receive(). Я вижу, что пакеты поступают через wirehark - но код просто не будет их обрабатывать ...
Мысли? Заранее спасибо!
Dan
EDIT: Я могу подтвердить, что мультифункциональные сетевые адаптеры вызывает проблемы --- код отлично работает с одной NIC. Разоружение строки SetSocketOption должно позволить ей работать с несколькими сетевыми адаптерами, но все равно не удается ... мысли?
Чтобы быть ясным, это «клиентское» приложение [машина] имеет несколько сетевых адаптеров или сервер, к которому подключено несколько сетевых адаптеров? –
Поскольку у меня такая же проблема, я готов подтвердить: «клиентское приложение [машина] имеет несколько сетевых адаптеров». Обычно клиент связан с серверами, находящимися в любой из сетей NIC. Сервер, имеющий несколько сетевых адаптеров, имеет значение только в том случае, если клиент может видеть сервер _same_ через несколько клиентских интерфейсов NIC. –
@ Dan Вы нашли обходное решение? У меня такая же проблема – J4N