P2P技术 TCP打洞 内网穿透
程序员文章站
2022-07-01 15:29:10
...
编程语言: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也不管用.