什么是NAT端口转发的最佳选择?

问题描述:

我想让用户可以方便地将他们的NAT上的端口转发到他们的本地计算机上用于我的C++应用程序。我想在OSX & Windows上完成这项工作。 Linux将是一项巨大的奖励,但是Linux用户可能更加舒适的手动转发端口,所以它不太受关注。 LGPL类型的代码是可以的,但我不能使用任何直接的GPL。什么是NAT端口转发的最佳选择?

我很想听到任何想法或经验的人在这方面已经有了,但有几个具体的问题浮现在脑海中:

  • 是否有UPNP公认的最好的图书馆吗? MiniUPNP客户端看起来可能会工作,但还有其他的东西吗?
  • Bonjour怎么样?我可以依靠OSX电脑吗?
  • 所有的大型BT软件都需要处理这个问题,那么他们是如何进行调查的? Skype怎么样?
+0

Skype不需要以纯模式转发端口 - 它使用中继(与许多IM一样):所以客户端的连接即将离任。 – 2009-05-10 04:51:51

MiniUPNP被至少一个bittorrent客户端(传输)使用,应该可以正常工作。

OS X和Windows上的Bonjour都可用于与支持uPNP或NAT-PMP的路由器进行端口映射。我没有使用API (DNSServiceNATPortMappingCreate),但我已经在NAT和PMP路由器之后的Windows和OS X上成功发布了广域服务。我不确定您的Windows用户是否会想要安装Bonjour(虽然他们可能已经拥有它,如果他们使用iTunes或Safari)来使用您的应用程序,但在OS X支持上不应该是一个问题。

+0

你可以在这里提供源代码吗?用于iOS中的端口映射。我尝试过使用MiniUPNP,但对我来说没有运气。 – 2011-09-11 20:40:08