1.公司電腦與家中電腦的遠程控制,通常經過teamview、向日葵等軟件,端口互通後,可使用電腦自帶的遠程桌面git
2.家中電腦搭建SVN、git倉庫,在外網或者內網訪問,通常使用雲服務器,端口互通後,能夠部署在任意電腦程序員
3.家中電腦搭建數據庫、web服務以及其餘基於TCP協議的服務,端口互通後,能夠部署在任意電腦github
注意:並非說就不須要購買雲服務器了,而是運行的服務能夠部署在任意電腦,雲服務器還是必須的,可是能夠買最便宜的服務器以達到省錢的目的web
場景:咱們有電腦A和電腦B,他們在不一樣的局域網,如今咱們須要在電腦A訪問電腦B的web服務(端口是80)數據庫
原理:咱們經過監聽電腦A的端口80,當此端口接收到http請求的時候,程序將經過一些操做,在電腦A、服務器以及電腦B中創建一條專用TCP連接,而後電腦A將80端口接收到的數據轉發到服務器中,而後服務器再把數據發送給電腦B的80端口,從而實現訪問電腦B的web服務的目的。windows
場景:咱們有電腦A和電腦B,他們在不一樣的局域網,如今咱們須要在電腦A訪問電腦B的web服務(端口是80)服務器
原理:咱們經過監聽電腦A的端80,當此端口接收到http請求的時候,程序將經過一些操做,在電腦A與電腦B中創建一條直連的TCP鏈接,而後電腦A將80端口收到的數據直接發送到電腦B的80端口,從而實現訪問電腦B的web服務。svn
項目一共分爲2種:性能
第一種:.net standard開發的核心庫,編譯後是dll,能夠跨平臺但不能直接運行測試
第二種:另外一種是.net core以及.net framework開發的啓動器,編譯後是各個平臺能夠運行的程序。
將核心庫的dll,放入啓動器的指定目錄中,才能正常運行程序。
這個項目主要是一些基類的實現,具體就不介紹了。
這是客戶端的核心庫
Commands:用於處理來自服務端發送的消息
ConfigIO:配置文件的讀取
Receive:由於拆包是本身寫的,在基類,而因爲一些特殊狀況,會須要不一樣的拆包邏輯,繼承基類後的新類都在Receive目錄(名字錯了哈哈哈)
Send:這個目錄主要存放的是發送到服務端的數據包封裝類
這是服務端的核心庫,結構與客戶端一致
這是一個.net core2.1項目,主要是經過反射啓動客戶端或者服務端,它能夠跨平臺。
這是專門爲windows開發的啓動器,主要是能夠註冊爲服務,從而達到開機自啓的目的。
剩下的項目能夠忽略了。
https://github.com/bobowire/Wireboy.Socket.P2PSocket
https://github.com/bobowire/Wireboy.Socket.P2PSocket/releases
這個項目是2019年2月開始開發的,那時候由於teamview開始有商業模式限制,因此本身萌發了作一款端口互通的軟件,不只能夠幫助公司協助解決用戶問題,還能在公司遠程家裏以及在家裏加班???哈哈哈
最初的版本開發了差很少20多天,而後通過2次代碼重構,變成了如今這個樣子。代碼重構很痛苦,你們寫代碼需謹慎。固然,在個人計劃中,我又要開始第3次代碼重構了。
有了這個東西以後,我發現不少程序員須要的東西就再也不那麼糾結了,好比我想要個數據庫,想要個svn,想要個本身用的web網盤,不用去管雲服務器的硬盤、cpu等限制了,仍是很實用的。不過你可能須要一個大寬帶的雲服務器了哈哈。
另外關於程序的性能,我用的阿里雲服務器,程序滿載寬帶的話,cpu差很少是3.5%左右。另外有人給我這個程序測試了一下可以鏈接的客戶端數量,說是500+的客戶端鏈接正常使用,他測不了更多了。
最後,github中的star你們能夠點一下,若是大家fork了代碼,必定要隔一段時間同步一下主版本的代碼。github中的QQ羣你們若是沒問題就不要加進去了,由於沒問題的人都會被清理出去。最後,歡迎你們提bug,不要提需求!!!