1. 程式人生 > >解決多網絡卡環境下使用特定網絡卡廣播UDP訊息的問題

解決多網絡卡環境下使用特定網絡卡廣播UDP訊息的問題

多網絡卡環境下發送UDP廣播到特定網路通常有以下幾種方式:

  1. 將socket繫結到特定網絡卡ip;
  2. 使用socket選項;
  3. 遍歷網絡卡;
  4. 設定路由表。

繫結到特定IP

建立socket後將其繫結到特定IP地址,則傳送廣播詳細的時候會通過此網絡卡傳送。如果我們的IP地址都不是固定的,那麼這種方式就不可用了。

使用socket選項

TBD

遍歷網絡卡

TBD

設定路由表

如果socket沒有繫結特定ip,那麼使用哪個網絡卡傳送UDP廣播由作業系統根據路由選擇,這個結果是不確定的。所以我們可以通過建立路由記錄來達到使用特定網絡卡傳送的目的。

在Windows下,通過router print命令可以檢視路由表資訊。通過router add

命令可以新增一條新的路由記錄。舉例:

router add -p 255.255.255.255 mask 255.255.255.0 192.168.40.1

這條命令把廣播地址路由到192.168.40.1這個地址上,這個地址是網絡卡所在子網的閘道器地址,引數-p表示建立永久路由,即重啟不會丟失。