| ログイン | ご入会 |
ADC連絡先
|
|
|
|
|
Q:CFNetSevices、NSNetServices、または DNSServiceDiscovery を使用して Rendezvous サービスをブラウズしていると、同じサービス名を含む複数の "Add" イベントが検出されることがあります。なぜこのようなことが起こるのでしょうか? A:デフォルトでは、Rendezvous はすべてのアクティブなインタフェースをブラウズするため、コンピュータで複数のネットワークインタフェースが使用可能な場合に、このようなことが起こります。したがって、たとえば、コンピュータに Ethernet 接続と AirMac 接続があり、Ethernet と AirMac の両方でサービスをアドバタイズしている場合、同じサービス名を含むコールバックが 2 回呼び出されます。 CFNetServices と NSNetSerivces では、サービスがどのネットワークインタフェースで検出されたかを知る方法がないため、どちらのサービス名も同じサービスを表すと想定するのが一番うまくいきます。たいていはサービスのリストに同じ名前を何度も表示したくないので、各サービス名の参照カウントを管理します。特定のサービス名について "Add" イベントを受け取るたびに参照カウントをインクリメントし、"Remove" イベントの場合は参照カウントをデクリメントします。参照カウントがゼロになったら、ブラウザリストからサービス名を削除します。複数のネットワークインタフェース上で検出されたサービスを Resolve(解決)するときには、Resolve クエリがすべてのネットワークインタフェースに送信されるため、Resolve を開始するのに どのCFNetServiceRef または NSNetService オブジェクトを使用するかは重要ではありません。
[2004 年 2 月 6 日] |