# 介紹
##
## 什么是內網穿透?
我想很多小伙伴剛學開發的時候,都會有一個想法,把自己寫的網站運行在自己的電腦上,然后還想讓別人通過網絡訪問到。
然后就接觸到了花生殼,natapp,等穿透軟件,感覺好神奇,為什么運行一個客戶端就可以讓別人通過外網訪問到呢?這是怎么實現的呢,帶著這個好奇心,所以就寫了這個軟件。
## 為什么要自己搭建一個內網穿透?
使用第三方的內網穿透軟件,比如natpp等,1、數據都流過他們的服務器,相對來說不太安全,2、 如果不充錢,網速慢不說,natpp還會限制你每分鐘的請求數,還要注冊一堆賬號,泄漏個人信息給這些平臺,
如果我們自己搭建一個穿透,帶寬我們自己獨享,而且沒有數據泄漏的問題。
這個項目支持所有tcp上層協議,比如遠程桌面,rtmp直播等
## 軟件結構

## 如何導入項目?
* 先通過git拉取代碼 https://gitee.com/haojiangbo/venomous_sting.git
* 導入idea或者eclise, 如何導入代碼, [請自行百度 O(∩_∩)O~~]
* 下面是導入成功后的代碼
* 
## 如何運行項目
* **第一步** 找到proxy模塊根目錄下的config文件
```
#二級域名,端口,客戶端Id(key),本地服務地址和端口號
www,8080,1587133230,127.0.0.1:80
mysql,8081,1587133232,127.0.0.1:3306
首先我說明一下 這幾個字符的含義,
我稱他為路由表
www 是要配置的二級域名
8080 是服務單監聽的端口,
1587133230 是clientId,只有這里正確了clientId,客戶端才能連接上
127.0.0.1:80 就是需要暴露的 本地服務,必須為 host:port 的格式
詳情請參考服務端源碼解讀文檔
```
* **第二步** 配置服務端端口號

* **第三步** 啟動服務端
先按照第一步的配置,配置成功后,找到proxy模塊start包目錄下面的StartProxyServerApp.java 啟動main函數即可
* **第四步** 配置客戶端

* **第五步** 啟動客戶端
先按照第四步的配置,配置成功后,找到proxyclient模塊start包目錄下面的ClientAppStart.java 啟動main函數即可
## 如何使用 cli 使用命令行的方式 操作 config(路由表)
```
java -jar proxyServer.jar cli #啟動 cli
目前只支持 list get set del flush exit 這幾條命令
list 命令 查看 當前所有路由表
get 命令 get <clientId> 查看某一個clientId的路由表 例如 get abc
set 命令 set <clientId> <field> <value> 設置路由表中具體的屬性 比如 set abc port 999
del 命令 del <clientId> 刪除路由表中的某一條記錄
flush 命令 使 當前路由表 立即生效
exit 退出當前客戶端
```
## 常用命令截圖

## 關于文檔收費的問題
* 本項目代碼完全開源,相信很多小伙伴即使不通過文檔,也可以進行正常的運行和使用
* 因為寫文檔確實要比寫代碼困難多了,需要耗費大量的時間,所以收點費用當自己的幸苦費,希望大家理解