Vb.net visualbasic中的UPnP:它还能工作吗?

Vb.net visualbasic中的UPnP:它还能工作吗?,vb.net,com,interop,upnp,Vb.net,Com,Interop,Upnp,tl;dr-我正在尝试使用Visual Basic代码通过UPnP打开内部和外部端口4305,以连接我的本地地址192.168.1.103 我花了20个小时寻找一种方法,通过VB的UPnP代码打开路由器上的这些端口。到目前为止,没有任何东西能让我通过VB触发端口。长话短说,我尝试了4.3种不同的选择,取得了不同的成功。这些是: Microsoft的Interop/COM NATUPnP库() NetworkLight_VB(一个我希望可以参考的老程序) ManagedUPnP库(这是.3,我花了

tl;dr-我正在尝试使用Visual Basic代码通过UPnP打开内部和外部端口4305,以连接我的本地地址192.168.1.103

我花了20个小时寻找一种方法,通过VB的UPnP代码打开路由器上的这些端口。到目前为止,没有任何东西能让我通过VB触发端口。长话短说,我尝试了4.3种不同的选择,取得了不同的成功。这些是:

Microsoft的Interop/COM NATUPnP库()

NetworkLight_VB(一个我希望可以参考的老程序)

ManagedUPnP库(这是.3,我花了很少的时间研究这个库,因为它是C#,但仍然认为它值得一提。)

UPnPc/迷你UPnPc()

端口映射器()

NATUPnP 1.0类型库

通过基于excel的程序对互操作服务有一点了解,这似乎是一个不错的解决方案,但是它没有走得很远,因为COM对象
Natupnlib.IStaticPortMappingCollection
总是以零返回。我想这可能是由于
NATUPNPLib.UPnPNAT
也返回空,尽管VisualStudio将其显示为初始化的COM对象。除了“您的UPnP可能已关闭”(事实并非如此)之外,没有什么信息或指导,我决定看看是否有其他方法,然后继续前进

NetworkLight\u VB

在试图通过VB寻找UPnP触发的工作示例时,我很快意识到这不是一个非常热门的话题,多年来几乎没有人谈论过,这个程序也不例外。打开程序时,它似乎运行良好,但我没有迹象表明它实际按照预期工作,我的路由器在它试图访问的端口上没有显示UPnP活动。我相信图书馆的使用仍有潜力,但我不确定如何正确利用它或在我自己的程序中引用它

ManagedUPnP库

这与NetworkLight_VB程序使用的UPnP库相同;不知道怎么用。(由于完全自学,我的知识基础充其量也不稳固。我成功使用的唯一参考资料是通过Visual Studio的“添加参考资料”选项,如NATUPnP互操作服务)

UPnPc/MiniUPnPc

作为一种潜在的解决方法,这显示了很多希望,允许使用隐形CMD窗口来完成肮脏的工作,但这也失败了。最糟糕的是我不知道为什么。运行它似乎没有问题,它成功地触发了UPnP,但我的路由器告诉我不是这样。检查UPnP列表显示没有打开的端口,任何在主机和客户端程序之间进行通信的尝试都失败

此时,我已经准备好放弃,手动向前移动。当然,如果我所尝试的每件事都失败了,那么我的设置、计算机肯定出了问题,某种行为不端。但我又试了一次

Portmapper

这个漂亮的java小程序工作起来很有魅力。我输入了信息,检查了我的路由器向导,你瞧,端口已经打开并准备就绪。在测试我的客户机和主机程序时,我确认它完全按照我希望的方式工作。只有一个问题:把它纳入我的程序。浏览作者的网站时,我发现它实际上有一个带有示例的命令行界面,尽管我可怜(而且非常疲倦)地尝试使用该CLI没有成功。不过,这应该不会太难解决

然而,让我烦恼的是,它需要在计算机上安装Java才能运行,而且由于这是一个基于对等的程序,因此用“请求用户安装Java”代替“请求用户安装Java”是不可取的(尽管,如果其他方法都失败了,那就这样吧。按install比导航路由器网关向导容易得多)

理想情况下,我希望NATUPnP互操作服务或任何库都能正常工作,这样我就不会在主程序之外运行代码,但我真的希望它能正常工作,所以我可能会使用它


非常感谢您提供有关如何使用这些库的指南、工作程序示例或其他方法的建议。

是的,我能感觉到您的痛苦。但问题可能更多的是您的实现,而不是您正在使用的工具。你能告诉我们你是如何使用首选库实现你的解决方案的吗?也许我们能帮上忙。是的,我能感觉到你很痛苦。但问题可能更多的是您的实现,而不是您正在使用的工具。您能否向我们展示您是如何使用首选库实现您的解决方案的?那么,我们或许可以提供帮助