открыть порт программно в C# - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь создать программу для открытия портов маршрутизатора, возможно, в C#. Я слышал, что это возможно с библиотекой opennat C#. Я пытался с этим кодом, но программа не показывает знаки ответа.

public Form1()
{
    InitializeComponent();
    OpenPort().Wait();
}
private static async Task OpenPort()
{
    var nat = new NatDiscoverer();
    var cts = new CancellationTokenSource(5000);
    var device = await nat.DiscoverDeviceAsync(PortMapper.Upnp, cts);

    await device.CreatePortMapAsync(new Mapping(Protocol.Tcp, 11000, 11000, 0, "port 11000"));
}

1 Ответ

0 голосов
/ 24 февраля 2020

Вот пример использования NatDiscovers отсюда https://csharp.hotexamples.com/en/examples/Open.Nat/NatDiscoverer/-/php-natdiscoverer-class-examples.html

 public void OpenExternalPort(int privatePort, int publicPort, string description)
 {
     localHostPort = privatePort;
     var timeSpan = new TimeSpan(0, 0, 0, 30);
     var cancellationTokenSource = new CancellationTokenSource(timeSpan);
     natDiscoverer = new NatDiscoverer();
     natDevice = natDiscoverer
         .DiscoverDeviceAsync(PortMapper.Upnp, cancellationTokenSource)
         .IsCompleted();
     mapping = new Mapping(Protocol.Tcp, privatePort, publicPort, description);
     natDevice
         .CreatePortMapAsync(mapping)
         .IsCompleted();
 }

Это похоже на пример кода (но new Mapping(Protocol.Tcp, privatePort, publicPort, description); не содержит еще один ноль, например в вашем коде).

Итак, вы действительно понимаете проблему? Может быть, вам не нужна карта портов? Или, может быть, у вас есть проблемы в других частях системы (например, брандмауэр)? Как вы понимаете, что ваш код не работает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...