public Task <UPnPSupportState> Prepare() { return(Task <UPnPSupportState> .Run(async() => { try { manager = new UPnPNAT(); UPnPPort testPort = new UPnPPort(1, PortType.TCP, Utils.GetLocalIP()); PortResult result = await CheckPort(testPort); switch (result) { case PortResult.Opened: //No more checks needed State = UPnPSupportState.Supported; break; case PortResult.Closed: //Let us check if we are able to open and close the test port. PortResult r = await OpenPort(testPort); if (r == PortResult.Opened) { r = await ClosePort(testPort); if (r == PortResult.Closed) { State = UPnPSupportState.Supported; } else { State = UPnPSupportState.NotSupported; } } else { State = UPnPSupportState.NotSupported; } break; default: //Something went wrong State = UPnPSupportState.NoPrepared; break; } } catch (Exception) { State = UPnPSupportState.NotSupported; } return State; })); }
public Task <UPnPSupportState> Prepare() { return(Task.Run(async() => { try { discoverer = new NatDiscoverer(); device = await discoverer.DiscoverDeviceAsync(PortMapper.Upnp, new CancellationTokenSource(10000)); if (device != null) { State = UPnPSupportState.Supported; return UPnPSupportState.Supported; } } catch (Exception) { } State = UPnPSupportState.NotSupported; return UPnPSupportState.NotSupported; })); }
public WindowsUPnP() { State = UPnPSupportState.NoPrepared; }