已经可以通信了,而由于A长时间为与C通信(也长时间没经过本地NAT),NAT的映射端口5060就会释放掉,
---------
A不是用的5060 端口和 C通讯? 哪里说他用哪个呢?
如果A在用5060 ,那么5060就不会被释放。
然而B这时候再向C通信,B的外网IP很可能由于映射表保存周期到了而变为59.23.45.56:5060
---------------------
就像你说到那样 B的59.23.45.56:30000 被释放了,就是说这期间B 没用过这个端口和任何一方包括服务器进行通讯。 那么下一步他要用 59.23.45.56:5060 和C的 某一端口 连接,肯定要重新做一次 udp 打洞的。
就算你知道 这个 “NAT设备保存映射的周期” 不知道你有什么作用 ???
难道你想用这个超时再服务器端推测B改变端口后用的是哪一个端口?
这根本没有必要,B改变之后自然会通知服务器。
反正B 和C 同时知道对方到外网端口就可以进行通讯,这个都是服务器分别告知B和C的,如果某一方到端口又改变了导致连不上,还是得又通过服务器才行。
========================
不说了,等个有实际经验到人来给楼主说说具体都是怎么做到吧。现在我说了也是白说