P2P技术 TCP打洞 内网穿透

编程语言:C/C++
主要使用:SOCKET套接字
编程软件:VS2015
技术实现:P2P TCP打洞 内网穿透实验
源码:http://download.csdn.net/download/aaron133/10231687

【1】服务器S:

1、监听等待主机A主机B连接.
2、服务器S主机A主机B对方的公网IP地址以及端口号告知对方(内网IP地址也可以包含,因为可能主机在同一个NAT后面).
3、关闭连接

【2】主机A:

1、创建套接字1.
2、设置套接字1为SO_REUSEADDR重用标记.
3、将套接字1绑定到一个指定端口号,例如8888.
4、连接服务器S
5、等待服务器发送主机B公网IP地址以及端口号
6、得到主机B公网IP地址以及端口号之后,新建另外一个套接字2.
7、设置套接字2为SO_REUSEADDR重用标记
8、将套接字2绑定到一个8888端口(第3步的端口号).
9、循环connect连接主机B.

【3】主机B:

主机A的步骤完全一样,当2个人同时发起connect时,connect返回0,这个套接字就是你们建立的链接.(不需要listen和accept

【注意】

1、NAT类型不同,导致一些方法可能不管用,网上的很多一方connect(被NAT直接丢弃),对于我的NAT不管用.
2、还有一种先connect在对方NAT留下记录,然后在让对方connect,我方accept也不管用.

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值