基於4G Cat.1的內網穿透例項分享
阿新 • • 發佈:2020-07-04
上一篇分享了:[小熊派4G開發板初體驗](https://t.1yb.co/OGy)
這一篇繼續BearPi-4G開發板實踐:`內網穿透實驗`。
## 基本TCP的socket通訊測試
之前我們學習WiFi模組時,與PC進行TCP協議的socket通訊測試我們只要在我們的PC上通過網路助手建立一個TCP Server就可以進行測試,我們的開發板當作客戶端與網路助手進行通訊。WiFi模組能直接與我們的PC通訊(前提是兩者能互ping得通)是因為它們兩個在同一個區域網內,我們的路由器給我們的WiFi模組與電腦各動態分配一個內網IP。場景大概如下:
![](https://s1.ax1x.com/2020/06/30/N5PDUS.png)
而我們這裡要使用4G模組與我們的PC進行通訊,需要進行`內網穿透`。因為4G模組用的是公網/外網IP地址,而我們的PC用得是一個內網IP地址。所以需要藉助一臺具有公網IP的伺服器進行中轉。場景大概如下:
![](https://s1.ax1x.com/2020/06/30/N5Pr4g.png)
可見,我們的4G模組要與我們的PC機進行一個TCP的socket通訊測試的話,必須要進行一個`內網穿透`。進行內網穿透可借用一些內網穿透的產品及工具。網路上大家常用的有:
- **ngrok**
> http://www.ngrok.cc/
![](https://s1.ax1x.com/2020/06/30/N5PyCQ.png)
- **花生殼**
> https://www.oray.com/
![](https://s1.ax1x.com/2020/06/30/N5PRuq.png)
- **NATAPP**
> https://natapp.cn/
![](https://s1.ax1x.com/2020/06/30/N5PI5F.png)
我們這裡使用ngrok來進行內網穿透實驗。具體步驟可閱讀《BearPi-4G實戰開發指南_V1.0》。
**1、開通隧道**
![](https://s1.ax1x.com/2020/06/30/N5Pgvn.png)
**2、配置隧道**
![](https://s1.ax1x.com/2020/06/30/N5Pcgs.png)
檢視本地IP的方法:
![](https://s1.ax1x.com/2020/06/30/N5P4ET.png)
**3、檢視隧道**
![](https://s1.ax1x.com/2020/06/30/N5P63j.png)
檢視隧道,記錄隧道ID、贈送域名及埠等資訊。
**4、下載Ngrok客戶端並啟動**
![](https://s1.ax1x.com/2020/06/30/N5PWD0.png)
![](https://s1.ax1x.com/2020/06/30/N5PfbV.png)
![](https://s1.ax1x.com/2020/06/30/N5P5UU.png)
上面是搭建一個內網穿透的條件。搭建好了內網穿透環境之後,我們就可以進行一個socket通訊測試實驗了。4G模組sdk開發包已經有給我們準備了一個tcp_client的demo,我們直接使用這個demo進行測試。相關程式碼在路徑:`ql-sdk\ql-application\threadx\interface\network\sockets\example`下的`example_sockets_tcp_client.c`:
![](https://s1.ax1x.com/2020/06/30/N5PTC4.png)
我們需要開啟最後一行的註釋,啟動相關tcp_client測試任務。
同時,需要修改`ql-sdk\ql-application\threadx`下的Makefile檔案,新增`example_sockets_tcp_client.c`所在的路徑:
![](https://s1.ax1x.com/2020/06/30/N5P78J.png)
最後,編譯、生成韌體、下載驗證:
![](https://s1.ax1x.com/2020/06/30/N5PH29.png)
以上就是本次的實踐分享。如有錯誤,歡迎指出