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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章