2.04测试版

我觉得吧
如果BC能内置STUN,自动检测及汇报NAPT后的公网端口,那么连端口映射都可以免了
只要运营商和路由器能提供NAT1,那么跟公网几乎同等了
内置STUN的话,还可以解决第三方工具只能TCP和UDP二选一的问题

目前BC已经有NAT检测工具,只要在这基础上增加一个保活操作就能变成一个STUN工具
第三方STUN需要把流量转发给应用程序,对操作系统或路由器造成一定的负担
而BC内置STUN的话,流量会发到自身,不需要转发

当检测到外部端口和监听端口一致时,什么都不用做
当检测到外部端口跟监听端口不同时,修改tracker汇报端口为外部端口
这过程中甚至不需要考虑是NAT1还是NAT3,因为NAT3的话无论汇报的是哪个端口都无法接受连接,那么可以乐观地默认本机是NAT1

对于运营商提供NAT1,但是路由器强制NAT3的情况,只需要添加一个常规的映射规则即可突破

即使运营商提供NAT3,对tracker汇报NAPT后的公网端口也有利于BEP055的打洞


关于NAPT导致的监听端口和外部端口不一致的问题,2年前的帖子中也有提过
附有libtorrent的实现方案

要是能在这基础上再优化向tracker汇报的外部端口,内网问题可以最大限度地解决了