Я работаю над приложением .Net 4 C # для поиска устройств SSDP в сети.У меня есть следующий код, который отправляет многоадресное сообщение через объект Socket, запрашивая устройства в сети, чтобы идентифицировать себя.
using (var identificationRequest = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp))
{
identificationRequest.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership,new MulticastOption(multicastAddress));
identificationRequest.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 2);
identificationRequest.Connect(new IPEndPoint(multicastAddress, multicastPort));
var message = Encoding.UTF8.GetBytes(broadcastMessage);
identificationRequest.Send(message,0, message.Length, SocketFlags.None);
identificationRequest.Close();
}
Этот код прекрасно работает в первые несколько раз, когда я запускаю его, однако после нескольких запусковон перестает работать.Не выдается никаких ошибок, но если я запускаю Wireshark, я вижу, что пакет больше не отправляется.Когда это происходит, единственный способ заставить меня работать снова - это перезагрузить компьютер.
В приложении нет циклов, и вышеприведенный код вызывается пользователем по требованию, поэтому я неесть много объектов сокетов, висящих вокруг.Обычно умирает после 4-6 пробежек.
Есть идеи?Что-нибудь еще, что я должен сделать, чтобы убрать после каждого запуска?
Edit : На самом деле это выглядит так, как будто мне не нужно перезапускать, и если я оставляю это через 5 минут, он запускаетсяснова работает.