C# socket TCP打洞可行吗?

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打洞能行吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值