I'd like to make it easy for users to forward a port on their NAT to their local machine for my C++ app. I'd like to make this work on OSX & Windows. Linux would be a great bonus, but Linux users are probably more comfortable forwarding ports manually, so it is less of a concern. LGPL type code is OK, but I can't use anything that is straight GPL.
I'd love to hear any thoughts or experiences anyone has had in this area, but a few specific questions come to mind:
- Is there a recognized best library for UPNP? The MiniUPNP client looks like it might work, but is there anything else out there?
- What about Bonjour? Can I rely on it for OSX computers?
- All the big bittorrent apps have to deal with this, so is there an existing survey of how they do it? What about Skype?