A,B位于不同的NAT后的两台PC,S位于公网:首先A,B分别于S建立连接,当连接建立起来后S便知道了A与B各自的外网IP+port;然后由S将他们的外网IP+port发往对方,这样A与B都知道了对方的外网IP+port,此刻假如A想和B通话,则A再次绑定port(这个port与A连接S时的不一样),并且listen();同时A经过S将A的新port发送给B,这样B就知道了A的外网IP+newport,再由B主动连接B,此刻为什么B无法连接上A呢?于此同时B再在这个Newport上Bind()并listen(),之后让A再次主动连接B,这样又能连接上吗?
我的理解:虽然A 绑定了新端口,但是当它映射到NAT——A后,端口就不等于Newport了,所以B连接不上A,同理A也连接不上B咯!
另外关于P2P中的客户端,是不是相当于把Socket的C与S端融合到一起了!是不是客户端同时也在监听连接,当然也是不是必须绑定端口!
TCP打洞能行吗?