getifaddrs()の結果が変更されたときの通知メカニズムはありますか?

StackOverflow https://stackoverflow.com/questions/1270186

  •  13-09-2019
  •  | 
  •  

質問

起動時に、私のプログラムは、ネットワークインターフェイスがリンクローカルIPv6マルチキャストのために利用可能であるかを調べるためにgetifaddrs()を呼び出します。これは、限り、それが行くように動作しますが、それはgetifaddrs後に利用可能なネットワークインターフェースの変更のセットは、()返された場合を処理しません。

ネットワークインターフェイスが変更されたとき、OSが私のプログラムを通知するためのいくつかの方法がありますので、私は再び)(getifaddrsを呼び出し、私のリストを更新することができますか?それとも私は永遠に、getifaddrs()数秒ごとにポーリングする運命でしょうか?

(注意:Windows上で、私は)(GetAdaptersAddresses()の代わりに、getifaddrsを呼び出すが、同じ問題が存在する)

役に立ちましたか?

解決

あなたはおそらくNotifyAddrChangeとNotifyIpInterfaceChange機能を見てしたいと思います。

他のヒント

また、これを実現するために、Linuxの方法は、家族AF_NETLINKとサブタイプNETLINK_ROUTEのソケットを開き、「男7ネットリンク」に含まれてのコード例に示すように、カーネルからに到着したメッセージを読むことです。 (それに私を指しているためロブSearceに感謝!)

誰もが興味を持っている場合は、私はときに、ネットワーク構成の変更通知を受け取る方法について説明し、Appleの開発者向けサイトで次の文書を発見しました。これは、非自明だが、私は私のために働くための技術を手に入れました。具体的にはリスト8を参照してください。

- ダイナミックTCP / IP環境での生活」する

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top