マルチキャストのループバック – プログラミング – Home

マルチキャストのループバック
 
通知
すべてクリア

[解決済] マルチキャストのループバック


ボコノン教徒
 ボコノン教徒
(@ボコノン教徒)
ゲスト
結合: 23年前
投稿: 4
Topic starter  

マルチキャストで、ソケットに対して

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

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

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


引用未解決
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

IPマルチキャストの解説を読むと、
Winsockでは、受信処理においてIP_MULTICAST_LOOPオプションが適用される
UNIXでは、送信処理においてIP_MULTICAST_LOOPオプションが適用される
とあります。

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


返信引用
ボコノン教徒
 ボコノン教徒
(@ボコノン教徒)
ゲスト
結合: 23年前
投稿: 4
Topic starter  

>IPマルチキャストの解説を読むと、

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

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

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

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

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました