我正在研究P2P应用程序,我需要使用UPnP通过NAT路由器/防火墙进行通信。但是,.NET Framework似乎不包含对UPnP的支持。
是否有适用于.NET的UPnP库? C#还是VB.NET?
更新:我后来发现NAT组件库(NATUPNP.DLL)是Windows的一部分(自Windows XP以来),它允许您使用UPnP轻松设置/维护端口转发。
我在这里写了一篇包含代码示例的文章: .NET Framework: Communicate through NAT Router via UPnP (Universal Plug and Play)
答案 0 :(得分:23)
我在微软UPnP控制点COM对象周围编写了一个完全托管的UPnP库,它有完整的源代码和一个演示项目,您可以从CodePlex下载它:
http://managedupnp.codeplex.com/
它支持使用对象heirachy完全遍历UPnP描述文档,其中包括非常容易使用。
答案 1 :(得分:21)
有一个易于访问的COM库:
UPnP™框架支持动态 智能家电网络, 无线设备和PC。有 两个用于处理的API UPnP认证的设备:
控制点API ,其中包含 用于的一组COM接口 查找和控制设备。 设备 主机API ,它由一组 用于实现的COM接口 由计算机托管的设备。
答案 2 :(得分:7)
Mono.Nat是upnp的一个非常好的库,至少在我的情况下,到目前为止,我使用NATUPnP时遇到的问题较少。
你可以下载它here,你可以在http://www.fluxbytes.com/csharp/upnp-port-forwarding-the-easy-way/
找到一个关于如何操作它的体面教程答案 3 :(得分:5)
此英特尔UPnP工具已作为开源工具重新发布:http://opentools.homeip.net。这些新工具被称为“UPnP技术的开发人员工具”。它们是用C#构建的,但是有一个免费的代码生成器可以输出C和C#堆栈。 C堆栈可以在Windows和Linux上运行。
Ylian
答案 4 :(得分:5)
亲自寻找这些东西并找到了::
mono-upnp :: https://github.com/mono/mono-upnp
Mono.Nat :: https://github.com/mono/Mono.Nat
答案 5 :(得分:3)
我使用它,这似乎工作正常:
答案 6 :(得分:3)
Intels UPNP Tools过去能够在C#中导出UPnP客户端。该套件已被弃用但仍应有效。
答案 7 :(得分:3)
如果有人需要一个简单的库,我写了一个使用UPnPLib COM组件的c#类库。它具有一些打开和关闭端口的基本功能。我还没有在多个平台上测试它,但它适用于Windows 7中的Visual Studio 2010.可以在http://sourceforge.net/projects/easyupnp/
下载它。答案 8 :(得分:3)
对于NAT,特别是有Mono.Nat。