當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Node.js dgram.Socket.setMulticastInterface(multicastInterface)用法及代碼示例


socket.setMulticastInterface(multicastInterface)

添加於:v8.6.0

參數

本節中對範圍的所有引用均指的是由 RFC 4007 定義的 IPv6 Zone Indices 。在字符串形式中,具有範圍索引的 IP 寫為'IP%scope',其中範圍是接口名稱或接口編號。

將套接字的默認傳出多播接口設置為所選接口或返回係統接口選擇。 multicastInterface 必須是來自套接字係列的 IP 的有效字符串表示形式。

對於 IPv4 套接字,這應該是為所需物理接口配置的 IP。所有在套接字上發送到多播的數據包都將在最近一次成功使用此調用所確定的接口上發送。

對於 IPv6 套接字,multicastInterface 應該包括一個範圍來指示接口,如下麵的示例所示。在 IPv6 中,單獨的 send 調用也可以在地址中使用顯式範圍,因此隻有發送到多播地址而不指定顯式範圍的數據包才會受到最近成功使用此調用的影響。

如果在未綁定的套接字上調用此方法,則會拋出 EBADF

示例:IPv6 傳出多播接口#

在大多數係統上,範圍格式使用接口名稱:

const socket = dgram.createSocket('udp6');

socket.bind(1234, () => {
  socket.setMulticastInterface('::%eth1');
});

在 Windows 上,範圍格式使用接口編號:

const socket = dgram.createSocket('udp6');

socket.bind(1234, () => {
  socket.setMulticastInterface('::%2');
});

示例:IPv4 傳出多播接口#

所有係統都在所需的物理接口上使用主機的 IP:

const socket = dgram.createSocket('udp4');

socket.bind(1234, () => {
  socket.setMulticastInterface('10.0.0.2');
});

調用結果#

對尚未準備好發送或不再打開的套接字的調用可能會引發 Not running Error

如果 multicastInterface 無法解析為 IP,則拋出 EINVAL System Error

在 IPv4 上,如果 multicastInterface 是有效地址但不匹配任何接口,或者如果地址不匹配係列,則拋出 System Error ,例如 EADDRNOTAVAILEPROTONOSUP

在 IPv6 上,大多數指定或省略範圍的錯誤將導致套接字繼續使用(或返回)係統的默認接口選擇。

套接字的地址族的 ANY 地址(IPv4 '0.0.0.0' 或 IPv6 '::')可用於將套接字默認傳出接口的控製權返回給係統,以供將來的多播數據包使用。

相關用法


注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品 dgram.Socket.setMulticastInterface(multicastInterface)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。