anchor.diff:                                 timeout : TimeSpan,
                                  multicastLoopback : bool,
                                  onMessage : (SsdpMessageProperties * SsdpMessage) -> unit) =
  -
  -        let configUdp (addr : IPAddress) =
  -            let udp = new UdpClient()
  -            udp.Client.SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true)
  -            udp.Client.Bind(IPEndPoint(addr, 0))
  -            udp.JoinMulticastGroup(SsdpConstants.SsdpEndPointIPv4.Address, addr)
  -            udp.MulticastLoopback <- multicastLoopback
  -            udp
   
           async {
   
  
positive.code: open System.Net.Sockets
  open System.Threading.Tasks
  open System.Threading.Tasks.Dataflow
  
  /// Client interface for listening to SSDP messages.
  type SsdpClient (name : string, multicastLoopback : bool, debugLogging : bool) =
  
negative.code:                 // No guarantee here; with a timeout some could starve, but at least there
                  // likely won't be many active network interfaces.
  
              sockets |> List.iter (fun s -> s.Close())
  
              return results.Length > 0
          }
  
  