我尝试为我的应用程序实现UDP打孔算法 . 当两个对等方联系服务器显示其公共IP时,3G蜂窝NAT为同一内部UDP端口分配了恒定的外部端口,但是,3G蜂窝NAT改变了内部 - >外部端口映射 depending on destination .

因此,例如,如果C是静态IP服务器,则A-> C映射到端口1234,而A-> B映射到端口5678.这样UDP打孔失败 .

由于这些蜂窝NAT使用CGN,因此没有UPnP / NAT-PMP支持 . 我已经阅读了关于CGN的PCP,其功能与此类似,但是,我没有在PCP上找到任何协议信息 .

有没有人知道是否有办法克服这个目标变量端口映射问题?

通过端口转发(如PCP)或遍历( PREFFERED ) .

最后一件事 . 有像 skype, viber 和MOST重要的概念证明 torrent downloaders 那些依赖于通过3G和其他蜂窝网络在android上工作的vuze-core(frostwire) . 所以他们显然必须找到解决方案......

提前致谢!