Port Mapper Lib


About

NAT routers allow a user to share a single IP address among multiple computers. This works well if the computers makes requests to outside hosts, but provides a little bit of a problem if the user wants to host something, say a game, on one of the internal computers. Since there are multiple computers sharing the same IP address, the NAT router doesn't know who to forward a connection request to, and will drop the packets. In order to host something on the inside, the user will have to manually configure the router to forward incoming requests to a specify internal IP. For a typical user this may be difficult to do, and can be quite frustrating when things just don't work.

This library provides a solution to this problem by allowing the developers to ask the user's router to temporarily forward a port. This is totally transparent to the user, and works nicely with DHCP, since we ask to forward the port when needed from the computer that needs the port mapping. To do this we either use Microsoft's UPnP API or Apple's NAT-PMP. UPnP has been around for awhile, and in all honesty is probably not going anywhere. It is large, complex (with many buzzwords, XML, SOAP, Metadata, etc...) and only the very small part related to port mapping is used on a regular basis. Apple decided that UPnP sucked, and for a long time none of Apple's Airport Base Stations supported any form of NAT Traversal. This changed in the summer of 2005 when Apple released a firmware update for their Base Stations, adding support for NAT-PMP. NAT-PMP does only one thing, allow applications to ask for a port to be forwarded. It is much simpler and much faster then doing the same thing with UPnP.

Features

Documentation

View API Documentation.

Sample Code

Price & Licensing

The cost of the library is $200.00. This includes royalty free distribution rights, and is a one time cost to your organization.

View License

Contact

Please email Michael Milvich at michael@milvich.com for additional information, to purchase, or to request a demonstration framework.