Exemple #1
0
        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;
            }));
        }
Exemple #2
0
        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;
            }));
        }
Exemple #3
0
 public WindowsUPnP()
 {
     State = UPnPSupportState.NoPrepared;
 }