基于STM32和W5500的UPnP自動端口映射功能實現
第一步:開啟路由器UPnP。登陸路由器控制界面,打開“轉發規則->UPnP 設置”,如果UPnP狀態沒有開啟,則需要開啟一下。
第二步:將編譯好的可執行文件下載到開發板中,接網線到路由器上,接USB調試線到PC端,打開串口助手對應的COM口以便查看調試信息和進入串口命令菜單。按復位鍵,程序開始執行,經過串口打印信息,我們看到DHCP獲取正確IP地址,發現UPnP設備、獲得描述,設置事件都已完成,如圖9所示:

圖9 UPnP執行成功打印輸出
接下來就是我們的串口操作菜單,如圖10:

圖10 程序完成初始化后的菜單界面
第三步:基本命令輸入。按照菜單提示進行命令輸入,在此1-4就是基本的串口命令操作:打開/關閉led,設置/查看網絡配置;5 、6步就是開啟TCP 、UDP回環測試。TCP回環實際上就是開啟了一個TCP Server,同一網段的TCP Client可以直接與其建立通信,可發送數據到此TCP Server,TCP Server會回復相同的數據。串口基本配置和內網回環測比較簡單,在此不再貼圖查看。
第四步:配置TCP端口映射。在串口調試助手上輸入 7,進行配置選項,按照菜單提示,我們端口映射,外網端口號為12222,內網端口號為5000,添加成功后會提示AddPortSuccess。如圖11所示:

圖11添加端口映射成功后串口打印出信息
刷新第一步進入的UPnP狀態設置和設備列表,可發現控制節點W5500_Control_Point 已經加入內部端口號為5000,外部端口53F7為12222。可見我們已經成功用UPnP協議對路由器端口進行了映射。而且看到Thunder5在這里也有UDP /TCP 端口映射列表。如圖12所示。在這里也說一下,我們常用的P2P軟件,Thunder PPlive等都支持UPnP端口映射。

圖12添加端口映射后路由器端口映射表
第五步,用外網測試配置好的端口映射。
如圖3端口映射網絡圖,W5500和PC2不在同一個網絡中,如果不進行端口映射,PC2不可能連接到W5500 TCP Server。首先我們在串口界面上輸入5進入TCP Server回環程序。接下來查看路由器的外網IP,可見外網IP為“36.36.141.53”,其為公網IP。我們任意找一臺PC用網絡調試助手建立一個TCP Client ,去連接我們剛才配置好的服務器IP為“36.36.141.53”端口為“12222”。連接成功后,發送LED_ON(紅色為發送的數據),通過網絡調試助手我們可以看到收到LED_ON(黑色為收到的數據),證明回環已建立。這就如同,無論我們在什么地方都能對我們的設備進行連接和控制。如圖13所示:

圖13外網連接到內網并進行數據回環測試
同時通過EVB上的LED,我們可以發現,LED燈可以根據我們輸入的指令執行亮滅動作。如圖14 所示:

圖14 LED根據命令進行亮滅
第六步:刪除已添加的端口。在菜單界面中輸入8,然后按指示刪除剛才的端口,刷新路由器映射表,發現已經沒有這個應用了。
四 總結
目前,實現各種設備的互聯互通已經成為人們的迫切需求,而實現這一目的的關鍵是家庭網絡的中間件技術,最有前景的就是今天講的UPnP,因此支持UPnP標準的設備越來越多。本文通過UPnP部分協議實現了設備的自動端口映射,方便設備直接部署在內網中,無需客戶去配置,就能在外網中直接訪問內網設備,查看或者配置設備信息。作為一個UPnP協議的一個簡單應用,希望能給大家一個思路。
評論