マルチキャストのループバック

[戻る]
ボコノン教徒 [E-Mail] 2002/10/22(火) 11:36:21
マルチキャストで、ソケットに対して

BOOL iParam = false;
setsockopt(hSocket, IPPROTO_IP, IP_MULTICAST_LOOP, 
    (char *)&iParam, sizeof(iParam));

とした場合、サーバー(データ送り側。OSはXP)の、
タスクマネージャーのネットワーク画面を見ると
受信バイト数にしっかりパケットがカウントされてしまいます
が、これは仕様なのでしょうか?
ループバックをOFFにした場合、受信バイト数が0に
なってくれると心穏やかになれるんですが。

なお、同じコードで、サーバーとクライアントを同時に
走らせた場合、クライアントにおいてはこのループバック
フラグはしっかり効いています。

dairygoods 2002/10/23(水) 17:52:20
IPマルチキャストの解説を読むと、
 Winsockでは、受信処理においてIP_MULTICAST_LOOPオプションが適用される
 UNIXでは、送信処理においてIP_MULTICAST_LOOPオプションが適用される
とあります。

そのため、Windowsアプリケーションの場合は、
パケットの送信自体は行われるのではないでしょうか?

ボコノン教徒 [E-Mail] 2002/10/24(木) 09:47:50
[[解決]]
>IPマルチキャストの解説を読むと、

MSDN英語版を見落としてました。
何じゃこりゃ、このON/OFFとか言う説明は。

>パケットの送信自体は行われるのではないでしょうか?

のようですね。WinSock2のマルチキャストの場合、
常に自ホスト向けにパケットが流れ込む仕組みに
なっているようです。「受け取る側で拒否すればいいじゃん」
という発想は、いかにもマイクロソフトらしいです。

全2重だから誰も文句を言わないのでしょうね。
CPU(ドライバー)に余分な負荷がかかっているような
気がするんですけど。

dairygoodsさん、情報ありがとうごさいました。
とりあえず、解決

古いスレッドには追加発言できません。