public void Probe(IPAddress address) { DiscoverySocket socket = new DiscoverySocket(endPointLocal); bool multicast = IsMulticast(address); if (multicast) { socket.JoinMulticastGroup(address); } string probe = BuildProbeMessage(); IPEndPoint endpoint = new IPEndPoint(address, WS_DISCOVER_PORT); socket.Send(endpoint, probe); socket.MessageReceived += OnMessageReceived; socket.Listen(); CloseConnectionParam task = new CloseConnectionParam(socket, WS_DISCOVER_MULTICAST_TIMEOUT); if (!multicast) { task.CloseEvent = socket.AnswerReceivedEvent; } ThreadPool.QueueUserWorkItem(CloseConnection, task); }
public CloseConnectionParam(DiscoverySocket socket, int timeout) { Socket = socket; Timeout = timeout; }