在前一篇,我提到如果要從遠端電腦存取 LabVIEW 的網路共用變數,必須設定 Windows Firewall 以允許連線通過防火牆。我在 National Intruments 網站上找到這篇文件,上面說,為了讓遠端電腦存取網路共用變數,必須打開下列這些 Ports:
UDP: 2343, 6000-6010
TCP: 2343, 59110 與往上的 ports (每個 application 開一個 port)
Well, 文件上沒說要開 TCP port 2343,不過,我猜可能是文件的遺漏,因為概據實測的結果,我發現一定要開 TCP port 2343 才行。
在 Windows 7 上,Windows Firewall 開 port 的操作步驟為:
Step 1: 點選「控制台 > Windows 防火牆」,打開 Windows 防火牆後,點選左手邊的「進階設定」:

Step 2: 在底下視窗中,先點一下左手邊的「輸入規則」,再點右手邊的「新增規則」,然後按下一步:

Step 3: 選擇「連接埠」,然後點下一步:

Step 4: 選擇通訊協定,以開 TCP port 2343 為例,這裏選擇 TCP,然後在「特定本機連接埠」欄位中輸入 2343。這是開一個 port 的方法,假如想一次開多個 ports,例如 UDP 6000 到 6010,那麼就選擇 UDP,然後輸入 6000-6010。

Step 5: 選擇「允許連線」,然後點下一步:

Step 6: 這個視窗用預設值就好,直接點下一步:

Step 7: 輸入規則的名稱,可以任意取名,例如我用 TCP 2343:

最後按下完成結束設定。如下圖所示,這時候在輸入規則視窗中,便會看到新增的規則:

以上的步驟示範如何開 TCP 2343 這個 port,其它 ports 只要照同樣步驟設定即可。
設定 Windows Firewall 的批次檔
假如你覺得 Windows Firewall 的設定步驟太繁瑣,那麼你可以連一下底下的連結,下載我寫的批次檔 (Batch File):
Configuring Firewall for LabVIEW
如下圖,壓縮檔裏一共有 4 個批次檔,其中 AddPortOpening_XXX.bat 是用來開 port,而 DelPortOpening_XXX.bat 則是用來關閉 port,假如將來想關掉網路共用變數所用的 ports,可以跑這個批次檔還原防火牆的設定。另外,批次檔有 Windows 7 和 Windows XP 兩種版本:

針對 TCP ports,從 59110 開始算起,你必須為每個 application 開一個 port。為了方便,批次檔裏總共開了 5 個 ports,從 59110 到 59114,底下是在 Windows 7 上開這 5 個 ports 的指令:
netsh advfirewall firewall add rule name="TCP 59110-59114" protocol=TCP dir=in localport=59110-59114 action=allow
另外,要注意在 Windows 7 批次檔必須以系統管理的身分執行才會有效。
在設定好 Windows Firewall 後,便可以在遠端電腦測試能否存取網路共用變數,這部份你可以參考「連結 Indicators 和 Shared Variables」、「連結與使用 Shared Variable」這兩篇的說明。
在遠端電腦上,當你使用 LabVIEW 連結網路共用變數時,LabVIEW 預設只會顯示 localhost 的共用變數,你可以在 Distributed System Manager 做個 Register Computer 的動作,這樣就可以直接瀏覽並存取 Server 的網路共用變數。例如,遠端電腦若要存取 192.168.2.106 的共用變數,那麼就打開 Distributed System Manager,參考下圖,然後點選 Actions > Register Computer:
接著輸入 192.168.2.106:

然後展開 Network Items 就會看到 192.168.2.106 分享出來的網路共用變數了:

參考資料