2008-12-02 45 views
39

Tôi đang làm việc trên một ứng dụng P2P, và tôi cần phải làm cho nó để giao tiếp thông qua NAT Router/tường lửa bằng cách sử dụng UPnP. Tuy nhiên, có vẻ như .NET Framework không hỗ trợ UPnP.Có thư viện UPnP cho .NET (C# hoặc VB.NET) không?

Có thư viện UPnP cho .NET không? C# hoặc VB.NET?

CẬP NHẬT: Từ đó tôi đã tìm thấy thành phần COM Thư viện kiểu NATUPnP 1.0 (NATUPNP.DLL) là một phần của Windows (kể từ Windows XP) cho phép bạn dễ dàng thiết lập/duy trì cổng chuyển tiếp bằng UPnP.

tôi đã viết một bài viết với các mẫu mã ở đây: .NET Framework: Communicate through NAT Router via UPnP (Universal Plug and Play)

+2

Hey cảm ơn bạn cho bài viết đầy đủ và dự án. Tôi đang thử nó ra và nó hoạt động rực rỡ trên một hệ thống Win7 32bit - tuy nhiên trên một hệ thống Win7 64bit, UPnPNATHelper.StaticPortMappings luôn là NULL. Bạn có hiểu biết về điều này không? – saurabhj

Trả lời

20

Có một thư viện COM đó là đủ dễ dàng để truy cập:

UPnP APIs Mục đích

Khung UPnP ™ cho phép năng động kết nối các thiết bị thông minh, thiết bị không dây và máy tính cá nhân. Có hai API để làm việc với các thiết bị UPnP chứng nhận:

Các Control Point API, trong đó bao gồm một tập hợp các giao diện COM sử dụng để tìm và kiểm soát các thiết bị. Thiết bị Thiết bị API máy chủ, bao gồm bộ giao diện COM được sử dụng để triển khai các thiết bị được lưu trữ bởi máy tính.

+7

Tôi đã viết một bài báo với các mẫu mã ở đây: .NET Framework: Giao tiếp thông qua NAT Router thông qua UPnP (Universal Plug and Play) - http://pietschsoft.com/post.aspx?id=31200e6d-4b61-48b8-a9cb-91e3dd8e97f3 –

+1

@ChrisPietschmann liên kết đã chết kể từ ngày 14 tháng 9 năm 2012 – Urda

+1

@Urda, liên kết đang hoạt động (một lần nữa). Liên kết Wayback Machine: http://web.archive.org/web/20130813184633/http://pietschsoft.com/post/2009/02/05/NET-Framework-Communicate-through-NAT-Router-via-UPnP –

3

Intels UPNP Tools sử dụng để có thể xuất khẩu khách hàng UPnP trong C#. Bộ sản phẩm không được dùng nữa nhưng vẫn hoạt động.

5

Công cụ UPnP của Intel đã được phát hành lại dưới dạng công cụ nguồn mở tại: http://opentools.homeip.net. Các công cụ mới được gọi là "Công cụ dành cho nhà phát triển cho công nghệ UPnP". Chúng được xây dựng trong C# nhưng có một trình tạo mã miễn phí sẽ xuất ra các ngăn xếp C và C#. C stack sẽ hoạt động trên Windows và Linux.

Ylian

+1

@ user230486 Yilan, bạn thực sự cần phải biến công cụ này thành một COM .dll hoặc .ocx để mọi người sử dụng VB6 hoặc Delphi (hoặc bất kỳ nhà thiết kế Win32 non.NET khác) có thể sử dụng tất cả công việc bạn đã đưa vào đó. Upnp.dll hiện tại là một cơn ác mộng của một điều khiển và tôi sẽ không muốn phải sử dụng nó trên kẻ thù tồi tệ nhất của tôi, xin vui lòng tạo ra một Com Wrapper ít nhất. –

3

Nếu ai đó cần thư viện dễ dàng, tôi đã viết thư viện lớp c sử dụng thành phần UPnPLib COM. Nó có một số chức năng cơ bản để mở và đóng cổng. Tôi chưa thử nghiệm trên nhiều nền tảng, nhưng nó hoạt động trên Visual Studio 2010 trong Windows 7. Hãy tải xuống miễn phí tại http://sourceforge.net/projects/easyupnp/

+3

liên kết đã chết ...... –

+0

https://github.com/meehi/EasyUPnP –

3

Đối với NAT, cụ thể là Mono.Nat.

23

tôi đã có văn bản thư viện UPnP Managed hoàn toàn xung quanh các đối tượng microsoft UPnP Control Point COM, nó có sẵn với nguồn đầy đủ và một dự án trình diễn, bạn có thể tải nó từ CodePlex đây:

http://managedupnp.codeplex.com/

Nó hỗ trợ truyền tải đầy đủ các tài liệu mô tả UPnP bằng cách sử dụng một đối tượng thừa kế và trong số những thứ khác rất dễ sử dụng.

+2

Điều này có vẻ rất hứa hẹn, tôi sẽ cung cấp cho điều này một đi trong dự án của tôi. – jishi

+0

nó đẹp, nhưng các đối tượng cơ bản dường như bị hỏng. công cụ tìm thiết bị không bao giờ gửi gói khám phá. –

7

Mono.Nat là một thư viện khá tốt cho UPnP, ít nhất cho trường hợp của tôi, tôi đã có ít vấn đề với nó cho đến nay hơn khi tôi đã sử dụng NATUPnP.

Bạn có thể tải nó here và bạn có thể tìm thấy một hướng dẫn đàng hoàng về cách vận hành nó tại http://www.fluxbytes.com/csharp/upnp-port-forwarding-the-easy-way/