簡體   English   中英

在 C# 中以編程方式打開端口

[英]open port programmatically in C#

我正在嘗試創建一個程序來打開路由器端口,可能是在 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"));
}

以下是使用https://csharp.hotexamples.com/en/examples/Open.Nat/NatDiscoverer/-/p​​hp-natdiscoverer-class-examples.html的 NatDiscovers 示例

 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);不像您的代碼那樣包含一個零)。

那么,你真的了解問題嗎? 也許你不需要端口映射? 或者您可能在系統的其他部分(如防火牆)有問題? 您如何理解您的代碼不起作用?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM