public override void Start(UPnPDevice device) { UPnPDevice d = device; while (d.ParentDevice != null) { d = d.ParentDevice; } TestDevice = d; ASocket = new AsyncSocket(4096); ASocket.Attach(new IPEndPoint(TestDevice.InterfaceToHost, 0), System.Net.Sockets.ProtocolType.Udp); ASocket.SetTTL(4); ASocket.AddMembership((IPEndPoint)ASocket.LocalEndPoint, IPAddress.Parse("239.255.255.250")); ASocket.OnReceive += new AsyncSocket.OnReceiveHandler(ReceiveSink); ASocket.Begin(); ASocket2 = new AsyncSocket(4096); ASocket2.Attach(new IPEndPoint(TestDevice.InterfaceToHost, 1900), System.Net.Sockets.ProtocolType.Udp); ASocket2.SetTTL(2); ASocket2.AddMembership((IPEndPoint)ASocket.LocalEndPoint, IPAddress.Parse("239.255.255.250")); ASocket2.OnReceive += new AsyncSocket.OnReceiveHandler(ReceiveSink2); Validate_MSEARCH_RESPONSETIME(); Validate_NOTIFY(); Validate_DISCOVERY(); UPnPTestStates RetState = UPnPTestStates.Pass; if (NOTIFY == UPnPTestStates.Failed || DISCOVERY == UPnPTestStates.Failed) { RetState = UPnPTestStates.Failed; } else { if (NOTIFY == UPnPTestStates.Warn || DISCOVERY == UPnPTestStates.Warn || MX == UPnPTestStates.Warn) { RetState = UPnPTestStates.Warn; } } state = RetState; }