0

私はReachabilityについて話していません。NSURLSession接続に特定のネットワークインターフェイスを選択する方法は?

私が話しているのは、iOSデバイスからセルラインターフェイスを介してネットワーク接続を作成する方法です。

なぜですか?私はデバイスがWiFiアクセスポイントに接続する条件を持っているので、WiFiを選択します...しかし、そのアクセスポイントはインターネットに接続されておらず、どこにも行きません。私は配信するために全力を尽くさなければならないデータを持っており、WiFiゲートウェイで煉獄に迷うケースもあります。 Reachabilityを使用しMPTCPに頼っているケースでは、アップルはすでにスタック内のWiFiを優先しています。

私は細胞のアクセスを許可NSURLSessionConfigurationallowsCellularAccessを設定することができます知っている - 私はに探していますが、ルーティングのための細胞が必要です。

でも、私はステータスをkCFStreamPropertyConnectionIsCellularで探していますCFNetworkレベルで、からkCFStreamPropertyNoCellularは、携帯を無効にします。

私は携帯電話を優先して見つけることができません。私は、アップルがWiFiを好むほどの長さになったことを認識しており、私はこれに反対しています。そのため、私はこのような難しさを持っています。

私はこれをCocoaレベルで保持したいと思いますが、Foundationまたはそれ以上のレベルに進むことに反対しません。私は、セルラインタフェースであるかを理解するためにインタフェーステーブル(たとえアクセス可能である場合)を解析しようとしないようにしたいと思います。

Wi-Fiが存在するにもかかわらず、誰もが携帯電話リンクを介してネットワーク接続を作成できましたか?

ここでの回答はMultipath TCPですか?

答えて

0

私が知っている限り、特定のインターフェイスにバインドするには、rawソケットレベルまで下げなければならず、NSURLSessionの目的でカスタムソケットを提供する方法がないため、基本的には最初から書き直しています。ソースIPにNSURLSessionをバインドするためのサポートを求めるバグを提出する必要があります。

問題は、iOSと切断されたネットワークに関する既知の問題です。 iOS 9以降は優れた仕事をしていますが、それでも問題は非常に深刻です。デバイスはWi-Fiネットワークとの会話を拒否し、時にはセルラーネットワークとの通信を拒否することもあります。具体的には、いずれかの信号が弱いと壮大に失敗するようです。ちょうど今朝、AirplaneモードにしてWi-Fiのみを有効にすることで、実際にiPhone(iOS 10)に接続されていないWi-Fiネットワークと通信するように強制しなければなりませんでした。

ルータの広告を提供しないようにネットワークのDHCPサーバを設定することでこれを解決できると言われています。つまり、試してみるたびに、iOSデバイスはオファーを繰り返し求めています。バグがある時点で修正された可能性があります。もしそうなら、それは価値があるかもしれませんが、iOSの古いバージョンでは動作しないと考えています。

iOS 3以前でWebブラウザをサポートする必要がないと仮定すると、そのWi-Fiネットワーク上のDHCPサーバを完全に削除して、ゼロのconf IPでDNSサービスの検出に頼ることができます。そうすれば、デバイスはルーターを認識せず、リンクローカルIP以外のインターフェイスからデータを送信しようとしません。

これは何らかの理由で不可能な場合は、通常、libcurlのカスタマイズされたコピーを使用することをお勧めします。ただし、POSIXネットワーキングが携帯電話のハードウェアを起動させないため、

+0

良い情報 - 悪いニュースにもかかわらず。 私の場合、WiFi信号は強く、SSIDをアナウンスする必要があります。 この帯域幅を生成するアクセスポイントの送信側をブロックする必要がある条件もあります。これらの条件が削除されると、アクセスポイントはインターネットにバックアップされます。 「WiFiアシスト」がこれに役立つと聞いたことがあります。おそらく、タイムアウトのしきい値を下げるために調整されたNSURLSessionConfigurationによって、セルラの「アシスト」に素早くロールオーバさせることができます。 – Thompsonian

関連する問題