p2p之Tcp穿透路由Nat

终于解决了关于基于Tcp的p2p的内网穿透问题

其实本该在去年就解决这个问题的,代码写出来了,只是一直没时间去验证。

这几天重写了一下。

 

中国的网络基本是全是内网,通过路由的nat转换;udp的p2p实现起来非常简单。

只是udp太不稳定了,如果网络快的情况下丢包太严重。

 

所以一直想是否能通过tcp来代替udp,还好在国外的一个论坛上看到了相关的解决方案

http://www.brynosaurus.com/pub/net/p2pnat/

相对于udp来说,复杂一点,只多了2步而已,网站上给出了全部步骤,但真正的建立并不需要完全按网站的,

 

我的方法是

1建立2个服务器,(for Base Tcp,for Hole Tcp)

2.打开Client,4个Socket,(1 for Base Tcp Socket  2 for Hole Socket 3,for Listen 4 for Connect To Listen)

3,建立base连接,

4发起hole连接,client—server,

5.server通知client打洞Hole,server通知client IP and Port

6.client  Listen 本地的hole端口

7 client请求connect TO client ;

8.如果失败client通知对方连接自己


Server:

 


Client 1

 

 

Client2


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏良辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值