是否有 .NET(C# 或 VB.NET)的 UPnP 库? [关闭]

Posted

技术标签:

【中文标题】是否有 .NET(C# 或 VB.NET)的 UPnP 库? [关闭]【英文标题】:Is there a UPnP Library for .NET (C# or VB.NET)? [closed] 【发布时间】:2010-09-24 21:18:31 【问题描述】:

我正在开发一个 P2P 应用程序,我需要让它使用 UPnP 通过 NAT 路由器/防火墙进行通信。但是,.NET Framework 似乎不包含对 UPnP 的支持。

有 .NET 的 UPnP 库吗? C# 还是 VB.NET?

更新:我后来发现了 NATUPnP 1.0 类型库 (NATUPNP.DLL) COM 组件,它是 Windows 的一部分(自 Windows XP 起),它允许您使用 UPnP 轻松设置/维护端口转发。

我在这里写了一篇带有代码示例的文章: .NET Framework: Communicate through NAT Router via UPnP (Universal Plug and Play)

【问题讨论】:

感谢您提供详尽的文章和项目。我正在尝试它,它在 32 位 Win7 系统上运行良好 - 但是在 64 位 Win7 系统上,UPnPNATHelper.StaticPortMappings 始终为 NULL。您对此有何见解? 【参考方案1】:

我围绕 microsoft UPnP 控制点 COM 对象编写了一个完全托管的 UPnP 库,它提供了完整的源代码和一个演示项目,您可以从 CodePlex 下载它:

http://managedupnp.codeplex.com/

它支持使用对象层次结构对 UPnP 描述文档进行完全遍历,并且非常易于使用。

【讨论】:

这看起来很有希望,我会在我的项目中尝试一下。 很好,但底层对象似乎已损坏。设备查找器从不发送发现数据包。【参考方案2】:

有一个很容易访问的 COM 库:

UPnP APIs目的

UPnP™ 框架支持动态 智能家电联网, 无线设备和个人电脑。有 两个用于使用的 API UPnP 认证设备:

控制点 API,包括 一组 COM 接口用于 查找和控制设备。 设备 Host API,由一组 COM接口用于实现 由计算机托管的设备。

【讨论】:

我在这里写了一篇带有代码示例的文章:.NET Framework: Communicate through NAT Router via UPnP (Universal Plug and Play) - pietschsoft.com/… @ChrisPietschmann 链接已于 2012 年 9 月 14 日失效 @Urda,链接正常工作(再次)。 Wayback 机器链接:web.archive.org/web/20130813184633/http://pietschsoft.com/post/…【参考方案3】:

Mono.Nat 是一个非常好的 upnp 库,至少就我而言,与使用 NATUPnP 时相比,我遇到的问题更少。

你可以在here下载它,你可以在http://www.fluxbytes.com/csharp/upnp-port-forwarding-the-easy-way/找到一个不错的操作教程

【讨论】:

【参考方案4】:

此英特尔 UPnP 工具已作为开源工具重新发布,网址为:http://opentools.homeip.net。新工具被称为“UPnP 技术的开发者工具”。它们是用 C# 构建的,但有一个免费的代码生成器可以输出 C 和 C# 堆栈。 C 堆栈适用于 Windows 和 Linux。

依莲

【讨论】:

@user230486 Yilan,你真的需要把这些东西变成 COM .dll 或 .ocx,这样使用 VB6 或 Delphi(或任何其他非 .NET Win32 设计器)的人才能使用你所做的所有这些工作'我投入了。当前的 upnp.dll 是控件的噩梦,我不希望在我最大的敌人身上使用它,请至少创建一个 Com Wrapper。【参考方案5】:

亲自四处寻找这些东西,发现::

mono-upnp:: https://github.com/mono/mono-upnp

Mono.Nat:: https://github.com/mono/Mono.Nat

【讨论】:

【参考方案6】:

我用这个,好像没问题:

http://code.google.com/p/dotnetportmapper/

【讨论】:

【参考方案7】:

Intels UPNP Tools 曾经能够在 C# 中导出 UPnP 客户端。该套件已弃用,但应该仍然可以使用。

【讨论】:

【参考方案8】:

如果有人需要一个简单的库,我编写了一个使用 UPnPLib COM 组件的 c# 类库。它具有打开和关闭端口的一些基本功能。我还没有在多个平台上对其进行测试,但它可以在 Windows 7 中的 Visual Studio 2010 上运行。请随时通过 http://sourceforge.net/projects/easyupnp/ 下载它

【讨论】:

github.com/meehi/EasyUPnP【参考方案9】:

对于 NAT,有 Mono.Nat。

【讨论】:

以上是关于是否有 .NET(C# 或 VB.NET)的 UPnP 库? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# 或 VB.NET 获取当前的本地主机名? [复制]

打开 chm 文件 c# 或 vb.net 目录的特定部分

在 ASP.Net 网站项目中混合 VB.Net 和 C# 代码?

将 SQL 命令从 vb .net 转换为 C#

从网站获取 HTML ID 以填写信息并按下 c# 或 vb.net 中的按钮

如何使用正则表达式匹配从 xml 文件中搜索和替换包含占位符标记的文本。 VB.net 或 C#