SCNetworkReachabilityCreateWithName()
リモートホストの可用性の監視を開始する機能を使用する iOS 用のネットワーククライアントを作成しました。これは、リモート ホストが IPv4 アドレスのみまたは IPv6 アドレスのみを持っている場合にうまく機能します。
クライアントが IPv4 のみのネットワーク上にあり、IPv4 アドレスと IPv6 アドレスの両方を持つホストを監視している場合に問題が発生します。クライアントはリモート ホストの IPv6 アドレスを監視し、IPv4 アドレスが到達可能であってもホストが使用できないことを示します。
IPv6 ネットワークが利用できない場合にデフォルトで IPv4 アドレスを監視するように SCNetworkReachability に指示する方法を検索しましたが、見つけることができませんでした。
デバイスのパブリック IP アドレスをプログラムで決定し、ホスト名を手動で解決し、非リンクのローカル IPv6 アドレスが存在する場合は IPv4 アドレスを使用することで、これを回避できますが、誰かがより簡単な解決策を持っていることを願っています。
iOS と OS X の機能は同じであるため、この問題は OS X クライアントにも影響します。
私の具体的な実装は、私の BKNetworkReachability クラスの .m および .h ファイルです: https://github.com/bindle/BindleKit/tree/master/BindleKit/controllers