2011-11-02 45 views
0

我有一個問題,我很困惑。例如 ,如果我想加入一個多播組239.255.0.1:30001來接收數據。我應該綁定哪個接口?我看到一些人說要綁定到多播地址239.255.0.1:30001。如何綁定到本地機器接口,如eth0/eth1?多播綁定接口問題

+0

參見:http://stackoverflow.com/questions/14388706/socket-options-so-reuseaddr-and-so-reuseport-how-do-they-differ-do-they-mean-t – JHiant

回答

1

這取決於您要定位的操作系統。

  • 對於Windows,綁定到本地機界面
  • 對於Linux &的Mac/iOS設備(和BSD風格的插座可能是其他用戶),綁定到多播地址
  • 對於代碼,會爲您解決跨Windows & Linux工作,綁定到INADDR_ANY(0)。請注意,您可能必須過濾掉不需要的流量。此外,這不適用於Mac/iOS。
+0

謝謝您。因爲我使用Linux,我想知道爲什麼綁定到多播地址而不是本地機器接口? –

+0

@MichaelD我不確定爲什麼API會以這種方式運行。 您確實需要在其他地方使用接口地址 - 用於IP_ADD_MEMBERSHIP(以及可選的IP_MULTICAST_IF)sockopts。 – simonc