Многоадресный сокет не получен после отключения / включения сетевого подключения - PullRequest
0 голосов
/ 20 сентября 2018

Я использую сокет со следующей конфигурацией для получения многоадресных пакетов, и код работает правильно.

socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
socket.Bind(bindPoint);
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(multicastAddress, IPAddress.Any));
socket.ReceiveTimeout = 1000;

Но после отключения сетевого подключения из панели управления и включения сокет не может получать данные многоадресной рассылки.,Я вижу пакеты с Wireshark.Я попытался закрыть сокет, сбросить его, но перезапуск - единственное решение, которое я нашел.Приложение будет использоваться в среде, где пользователь обычно отключает кабель Ethernet и подключает другой.

Первоначально я использовал UdpClient, но та же проблема сохраняется и на этом.Операционная система - Windows 7, и я использую .NET 4.5.2.

1 Ответ

0 голосов
/ 20 сентября 2018

После отключения сетевого подключения Windows автоматически использует другое подключение, если оно у вас есть (виртуальный хост и т. Д.).После включения предыдущего соединения приложение не использует правильное соединение, так как не было никакого выбора интерфейса.Отключение других соединений или указание интерфейса решает проблему.

...