.Net Socket перестает работать после нескольких использований - PullRequest
1 голос
/ 23 февраля 2012

Я работаю над приложением .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 минут, он запускаетсяснова работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...