Skip to content
This repository has been archived by the owner on Jun 8, 2024. It is now read-only.
/ Open.NAT Public archive
forked from alanmcgovern/Mono.Nat

Lightweight and easy-to-use class library to allow port forwarding in NAT devices with UPNP and/or PMP

License

Notifications You must be signed in to change notification settings

lontivero/Open.NAT

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

5c91653 · Jan 6, 2022
May 7, 2014
Aug 5, 2016
Oct 26, 2018
Jan 6, 2022
Oct 23, 2018
Aug 30, 2016
Jul 30, 2016
Aug 30, 2016
Oct 23, 2018
Jul 30, 2016

Repository files navigation

Logo

Open.NAT

Open.NAT is a lightweight and easy-to-use class library to allow port forwarding in NAT devices that support UPNP (Universal Plug & Play) and/or PMP (Port Mapping Protocol).

Goals

NATed computers cannot be reached from outside and this is particularly painful for peer-to-peer or friend-to-friend software. The main goal is to simplify communication amoung computers behind NAT devices that support UPNP and/or PMP providing a clean and easy interface to get the external IP address and map ports and helping you to achieve peer-to-peer communication.

  • Tested with .NET YES
  • Tested with Mono YES

How to use?

With nuget :

Install-Package Open.NAT

Go on the nuget website for more information.

Example

The simplest scenario:

var discoverer = new NatDiscoverer();
var device = await discoverer.DiscoverDeviceAsync();
var ip = await device.GetExternalIPAsync();
Console.WriteLine("The external IP Address is: {0} ", ip);

The following piece of code shows a common scenario: It starts the discovery process for a NAT-UPNP device and onces discovered it creates a port mapping. If no device is found before ten seconds, it fails with NatDeviceNotFoundException.

var discoverer = new NatDiscoverer();
var cts = new CancellationTokenSource(10000);
var device = await discoverer.DiscoverDeviceAsync(PortMapper.Upnp, cts);

await device.CreatePortMapAsync(new Mapping(Protocol.Tcp, 1600, 1700, "The mapping name"));

For more info please check the Wiki

Awesome software using Open.NAT

Documentation

Development

Open.NAT is been developed by Lucas Ontivero (@lontivero). You are welcome to contribute code. You can send code both as a patch or a GitHub pull request.

Here you can see what are the next features to implement. Take it a look! Build Status

Build status

NuGet version

##Help me to maintain Open.NAT

Bitcoin address

15fdF4xeZBZMqj8ybrrW7L392gZbx4sCXH

About

Lightweight and easy-to-use class library to allow port forwarding in NAT devices with UPNP and/or PMP

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 99.8%
  • Batchfile 0.2%