1. 程式人生 > >P2P技術 TCP打洞 內網穿透

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