使用.net standard實現不同內網端口的互通(類似花生殼)


應用場景

1.公司電腦與家中電腦的遠程控制,一般通過teamview、向日葵等軟件,端口互通后,可以使用電腦自帶的遠程桌面

2.家中電腦搭建SVN、git倉庫,在外網或者內網訪問,一般使用雲服務器,端口互通后,可以部署在任意電腦

3.家中電腦搭建數據庫web服務以及其他基於TCP協議的服務,端口互通后,可以部署在任意電腦

注意:並不是說就不需要購買雲服務器了,而是運行的服務可以部署在任意電腦,雲服務器仍是必須的,但是可以買最便宜的服務器以達到省錢的目的

 

技術原理

模式一  服務器中轉:

  場景:我們有電腦A和電腦B,他們在不同的局域網,現在我們需要在電腦A訪問電腦B的web服務(端口是80)

  原理:我們通過監聽電腦A的端口80,當此端口接收到http請求的時候,程序將通過一些操作,在電腦A、服務器以及電腦B中建立一條專用TCP鏈接,然后電腦A將80端口接收到的數據轉發到服務器中,然后服務器再把數據發送給電腦B的80端口,從而實現訪問電腦B的web服務的目的。

 

模式二 直接連接:

  場景:我們有電腦A和電腦B,他們在不同的局域網,現在我們需要在電腦A訪問電腦B的web服務(端口是80)

  原理:我們通過監聽電腦A的端80,當此端口接收到http請求的時候,程序將通過一些操作,在電腦A與電腦B中建立一條直連的TCP連接,然后電腦A將80端口收到的數據直接發送到電腦B的80端口,從而實現訪問電腦B的web服務。

 

 

項目結構介紹

完整結構:

 

 

 

項目一共分為2種:

第一種:.net standard開發的核心庫,編譯后是dll,可以跨平台但不能直接運行

第二種:另一種是.net core以及.net framework開發的啟動器,編譯后是各個平台可以運行的程序。

將核心庫的dll,放入啟動器的指定目錄中,才能正常運行程序。

 

P2PSocket.Core項目

 

 

 

這個項目主要是一些基類的實現,具體就不介紹了。

 

P2PSocket.Client項目

 

 

這是客戶端的核心庫 

Commands:用於處理來自服務端發送的消息

 ConfigIO:配置文件的讀取

 Receive:因為拆包是自己寫的,在基類,而由於一些特殊情況,會需要不同的拆包邏輯,繼承基類后的新類都在Receive目錄(名字錯了哈哈哈)

 Send:這個目錄主要存放的是發送到服務端的數據包封裝類

 

P2PSocket.Server

 

 

 這是服務端的核心庫,結構與客戶端一致

 

P2PSocket.StartUp項目

 

這是一個.net core2.1項目,主要是通過反射啟動客戶端或者服務端,它可以跨平台。

 

 

P2PSocket.StartUp_Windows項目

 

 

 

這是專門為windows開發的啟動器,主要是可以注冊為服務,從而達到開機自啟的目的。

 

剩下的項目可以忽略了。

 

項目源碼下載地址

https://github.com/hemaju/Wireboy.Socket.P2PSocket

 

最新程序下載地址

https://github.com/hemaju/Wireboy.Socket.P2PSocket/releases

 

結語

這個項目是2019年2月開始開發的,那時候因為teamview開始有商業模式限制,所以自己萌發了做一款端口互通的軟件,不僅可以幫助公司協助解決用戶問題,還能在公司遠程家里以及在家里加班???哈哈哈

最初的版本開發了差不多20多天,然后經過2次代碼重構,變成了現在這個樣子。代碼重構很痛苦,大家寫代碼需謹慎。當然,在我的計划中,我又要開始第3次代碼重構了。

有了這個東西之后,我發現很多程序員需要的東西就不再那么糾結了,比如我想要個數據庫,想要個svn,想要個自己用的web網盤,不用去管雲服務器的硬盤、cpu等限制了,還是很實用的。不過你可能需要一個大寬帶的雲服務器了哈哈。

另外關於程序的性能,我用的阿里雲服務器,程序滿載寬帶的話,cpu差不多是3.5%左右。另外有人給我這個程序測試了一下能夠連接的客戶端數量,說是500+的客戶端連接正常使用,他測不了更多了。

最后,github中的star大家可以點一下,如果你們fork了代碼,一定要隔一段時間同步一下主版本的代碼。github中的QQ群大家如果沒問題就不要加進去了,因為沒問題的人都會被清理出去。最后,歡迎大家提bug,不要提需求!!!

 

 

github首頁展示

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM