マルチキャストで、ソケットに対して
BOOL iParam = false;
setsockopt(hSocket, IPPROTO_IP, IP_MULTICAST_LOOP,
(char *)&iParam, sizeof(iParam));
とした場合、サーバー(データ送り側。OSはXP)の、
タスクマネージャーのネットワーク画面を見ると
受信バイト数にしっかりパケットがカウントされてしまいます
が、これは仕様なのでしょうか?
ループバックをOFFにした場合、受信バイト数が0に
なってくれると心穏やかになれるんですが。
なお、同じコードで、サーバーとクライアントを同時に
走らせた場合、クライアントにおいてはこのループバック
フラグはしっかり効いています。
IPマルチキャストの解説を読むと、
Winsockでは、受信処理においてIP_MULTICAST_LOOPオプションが適用される
UNIXでは、送信処理においてIP_MULTICAST_LOOPオプションが適用される
とあります。
そのため、Windowsアプリケーションの場合は、
パケットの送信自体は行われるのではないでしょうか?
>IPマルチキャストの解説を読むと、
MSDN英語版を見落としてました。
何じゃこりゃ、このON/OFFとか言う説明は。
>パケットの送信自体は行われるのではないでしょうか?
のようですね。WinSock2のマルチキャストの場合、
常に自ホスト向けにパケットが流れ込む仕組みに
なっているようです。「受け取る側で拒否すればいいじゃん」
という発想は、いかにもマイクロソフトらしいです。
全2重だから誰も文句を言わないのでしょうね。
CPU(ドライバー)に余分な負荷がかかっているような
気がするんですけど。
dairygoodsさん、情報ありがとうごさいました。
とりあえず、解決