皆さんはじめまして。Greenと申します。
早速ですが質問させて下さい。
WinsockのUDPにてマルチキャストを使って送受信しようと考えています。
アプリケーションはサーバーとクライアント2つを作成します。
基本的な機能は実装し複数PCを使った動作は確認しています。
サーバー・クライアントは同一PC上でも動作するようにしたいのですが
同一PC上だとマルチキャストで送信するとクライアント側で受信しません。
同一PC上でも受信できるようにはできないのでしょうか?
IP_MULTICAST_LOOPをsetsockoptでTRUEに設定するとループバックして受信できる
という話をどこかで見たので試してみたのですが駄目でした。
どなたかご存知のかたがいらっしゃいましたらご教授下さい。
宜しくお願い致します。
環境を書き忘れてしまいました。
WinXP SP1 + VC6です。
マルチキャストのループバックはデフォルトでTRUEになっているはずです。
失敗しそうな点としては、
サーバーとクライアントで同一のポートを使おうとしているとか、
LANにつなげずに1台で実験しているとか。
setsockoptでSO_REUSEADDRをONにする必要があったような。
> IP_MULTICAST_LOOPをsetsockoptでTRUEに設定するとループバックして受信できる。
クライアント側で実行してますよね。
Greenです。
dairygoods様、ボコノン教徒様 レスありがとうございます。
> LANにつなげずに1台で実験しているとか。
ちょっと現在出張中でLANに繋げられる環境がないので
ノートPC一台でテストしています。
LANにつながっていない場合はループバックは入らないのでしょうか?
>setsockoptでSO_REUSEADDRをONにする必要があったような。
>> IP_MULTICAST_LOOPをsetsockoptでTRUEに設定するとループバックして受信できる。
>クライアント側で実行してますよね。
これはSO_REUSEADDRはONにしていますしクライアント側で実行しています。
> LANにつながっていない場合はループバックは入らないのでしょうか?
ネットワークが有効でない環境では、
そもそもマルチキャスト・グループへの参加がエラーとなり、
受信できなかったと記憶しています。
ソケット初期化のエラーチェックをしていますか?
LANには繋いでいないのですがADSLルータに接続しているのでエラーには
ならなかったみたいです。一応マルチキャストのチェックをするときは
WANに接続をせずに行っていましたが特にエラーは出ませんでした。
(ルータとPCは繋いでいました)
ルータと繋いでいるLANケーブルを抜くとエラーが出ます。
パフォーマンスモニターかタスクマネージャー(XPの場合)で
トラフィックの確認(Sentのみのようだけど)ができませんか?
返事遅くなってしまいました。すみません。
トラフィック確認してみましたがどうやら発生していないようです。