.Net套接字在几次使用后停止工作

时间:2012-02-23 07:46:42

标签: c# .net sockets

我正在开发.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次运行后死亡。

有什么想法吗?每次运行后我还应该做些什么来清理?

编辑:实际上看起来我不需要重新启动,如果我将其保留5分钟,它就会重新开始工作。

0 个答案:

没有答案