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也不管用.

你可能感兴趣的:(Windows网络编程)