beB*_*oss 5 c# port upnp portforwarding miniupnpc
我正在尝试创建一个简单的程序,只需单击一下即可打开/转发某些端口,而无需每次都在控制台中进行操作。
好吧,我知道两个不同的项目可以打开端口,第一个叫做“ upnpc”-> http://miniupnp.free.fr/files/,但是必须为每个端口手动完成,第二个则是可以打开的lib在C#-> https://github.com/lontivero/Open.NAT中使用。
第一种方法是创建脚本并使用C#调用它,但我认为这不是一个好主意。
upnpc-shared -a 192.168.1.12 6622 6622 TCP
Run Code Online (Sandbox Code Playgroud)
第二个带有lib的东西,无法弄清为什么不起作用。
这是我的代码,应该打开/转发3个端口,但只有最后一个有效。附言:我认为它一个接一个地打开了端口,但由于某种原因,只有最后一个似乎起作用,其他端口停止了。
public static void Main()
{
OpenPort().Wait();
Console.WriteLine("\nPress any key to exit...");
Console.ReadKey();
}
private static async Task OpenPort()
{
var nat = new NatDiscoverer();
var cts = new CancellationTokenSource(5000);
var device = await nat.DiscoverDeviceAsync(PortMapper.Upnp, cts);
var ip = await device.GetExternalIPAsync();
Console.WriteLine("Your IP: {0}", ip);
await device.CreatePortMapAsync(new Mapping(Protocol.Tcp, 6622, 6622, 0, "port 6622"));
await device.CreatePortMapAsync(new Mapping(Protocol.Tcp, 6625, 6625, 0, "port 6625"));
await device.CreatePortMapAsync(new Mapping(Protocol.Tcp, 6626, 6626, 0, "port 6626"));
Console.WriteLine("Done!");
}
Run Code Online (Sandbox Code Playgroud)
不知道为什么不起作用,也不知道如何使其适用于所有端口。希望有人会向我展示执行此任务的正确方法。
| 归档时间: |
|
| 查看次数: |
1428 次 |
| 最近记录: |