基于STM32和W5500的UPnP自動端口映射功能實現(xiàn)
第一步:開啟路由器UPnP。登陸路由器控制界面,打開“轉發(fā)規(guī)則->UPnP 設置”,如果UPnP狀態(tài)沒有開啟,則需要開啟一下。
第二步:將編譯好的可執(zhí)行文件下載到開發(fā)板中,接網(wǎng)線到路由器上,接USB調(diào)試線到PC端,打開串口助手對應的COM口以便查看調(diào)試信息和進入串口命令菜單。按復位鍵,程序開始執(zhí)行,經(jīng)過串口打印信息,我們看到DHCP獲取正確IP地址,發(fā)現(xiàn)UPnP設備、獲得描述,設置事件都已完成,如圖9所示:
圖9 UPnP執(zhí)行成功打印輸出
接下來就是我們的串口操作菜單,如圖10:
圖10 程序完成初始化后的菜單界面
第三步:基本命令輸入。按照菜單提示進行命令輸入,在此1-4就是基本的串口命令操作:打開/關閉led,設置/查看網(wǎng)絡配置;5 、6步就是開啟TCP 、UDP回環(huán)測試。TCP回環(huán)實際上就是開啟了一個TCP Server,同一網(wǎng)段的TCP Client可以直接與其建立通信,可發(fā)送數(shù)據(jù)到此TCP Server,TCP Server會回復相同的數(shù)據(jù)。串口基本配置和內(nèi)網(wǎng)回環(huán)測比較簡單,在此不再貼圖查看。
第四步:配置TCP端口映射。在串口調(diào)試助手上輸入 7,進行配置選項,按照菜單提示,我們端口映射,外網(wǎng)端口號為12222,內(nèi)網(wǎng)端口號為5000,添加成功后會提示AddPortSuccess。如圖11所示:
圖11添加端口映射成功后串口打印出信息
刷新第一步進入的UPnP狀態(tài)設置和設備列表,可發(fā)現(xiàn)控制節(jié)點W5500_Control_Point 已經(jīng)加入內(nèi)部端口號為5000,外部端口53F7為12222??梢娢覀円呀?jīng)成功用UPnP協(xié)議對路由器端口進行了映射。而且看到Thunder5在這里也有UDP /TCP 端口映射列表。如圖12所示。在這里也說一下,我們常用的P2P軟件,Thunder PPlive等都支持UPnP端口映射。
圖12添加端口映射后路由器端口映射表
第五步,用外網(wǎng)測試配置好的端口映射。
如圖3端口映射網(wǎng)絡圖,W5500和PC2不在同一個網(wǎng)絡中,如果不進行端口映射,PC2不可能連接到W5500 TCP Server。首先我們在串口界面上輸入5進入TCP Server回環(huán)程序。接下來查看路由器的外網(wǎng)IP,可見外網(wǎng)IP為“36.36.141.53”,其為公網(wǎng)IP。我們?nèi)我庹乙慌_PC用網(wǎng)絡調(diào)試助手建立一個TCP Client ,去連接我們剛才配置好的服務器IP為“36.36.141.53”端口為“12222”。連接成功后,發(fā)送LED_ON(紅色為發(fā)送的數(shù)據(jù)),通過網(wǎng)絡調(diào)試助手我們可以看到收到LED_ON(黑色為收到的數(shù)據(jù)),證明回環(huán)已建立。這就如同,無論我們在什么地方都能對我們的設備進行連接和控制。如圖13所示:
圖13外網(wǎng)連接到內(nèi)網(wǎng)并進行數(shù)據(jù)回環(huán)測試
同時通過EVB上的LED,我們可以發(fā)現(xiàn),LED燈可以根據(jù)我們輸入的指令執(zhí)行亮滅動作。如圖14 所示:
圖14 LED根據(jù)命令進行亮滅
第六步:刪除已添加的端口。在菜單界面中輸入8,然后按指示刪除剛才的端口,刷新路由器映射表,發(fā)現(xiàn)已經(jīng)沒有這個應用了。
四 總結
目前,實現(xiàn)各種設備的互聯(lián)互通已經(jīng)成為人們的迫切需求,而實現(xiàn)這一目的的關鍵是家庭網(wǎng)絡的中間件技術,最有前景的就是今天講的UPnP,因此支持UPnP標準的設備越來越多。本文通過UPnP部分協(xié)議實現(xiàn)了設備的自動端口映射,方便設備直接部署在內(nèi)網(wǎng)中,無需客戶去配置,就能在外網(wǎng)中直接訪問內(nèi)網(wǎng)設備,查看或者配置設備信息。作為一個UPnP協(xié)議的一個簡單應用,希望能給大家一個思路。
評論