インターネット経由で 2 台のモバイル デバイス (iPhone) 間のソケットを接続することはできますか?

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

  •  03-07-2019
  •  | 
  •  

質問

インターネット経由で 2 台のモバイル デバイス (iPhone) 間のソケットを接続することはできますか?

各デバイスのIPを検出して直接接続しようとしています。Bonjour を使用して実行できることはわかっていますが、それはローカル ネットワークでのみ機能します。インターネット経由で 2 つのデバイス間の高速接続が必要です。

ありがとう。

役に立ちましたか?

解決

両方の IP があり、両方がルーティング可能であれば、それは可能です。ただし、3G ネットワークによって割り当てられた IP がルーティング可能かどうかはわかりません。WIFI を使用している場合、取得する IP はほぼ確実にルーティング可能ではありません。ただし、ルーティング可能な IP があれば、それは可能です。

重要なのは、他のデバイスの IP を検出することだけです。これを行うための最良の方法は、アプリの起動時に各デバイスがその IP を Web サービスに登録し、そのサービスにクエリを実行して他のデバイスの IP を見つけることです。

アプリを閉じたとき、または IP が変更されたときに、IP の「登録解除」を管理するのは少し難しいかもしれませんが、実行できるはずです。

到着予定時刻:

両方が接続できるサーバーがある場合は、そのサーバーを使用してソリューションを実装できるはずです (つまり、電話機が実際に相互に直接接続することはありません)。これにより、電話機のルーティング可能な IP の問題が回避されます。

ソケットをブリッジする方法については、サーバー プログラムは基本的に昔ながらの電話交換機のように動作します。サーバー ソフトウェアには、ある種の登録および検出プロトコルが組み込まれており、これにより電話機自体がサーバーに登録され、現在サーバーに接続されている他の電話機のリストをクエリし、どの電話機と通話したいかを示すことができます。他の電話からの接続を受け入れます。

誰が誰と話したいのかが分かると、サーバー ソフトウェアは、一方の電話機のソケットからデータを読み取り、そのデータをもう一方の電話機のソケットに書き込むことで、両者を接続します。

他のヒント

提案にすぎませんが、それぞれを取得して3番目のサイトに接続できる場合は、それぞれのアドレスがわかります。電話機Aのアドレスを電話機Bに(および/または電話機Bを電話機Aに)送信し、必要に応じて接続します。

3.0のすべての機能を確認しましたか?特にピアネットワーキング(存在はパブリックです)。

WiFiルーターには、しばしば「ポートトリガー」と呼ばれる機能があります。これにより、内部ホスト(この場合はiPhone)がルーターに、特定のポートで接続を転送したいことを通知できます。 iPhoneがこのプロトコルをサポートしているかどうかはわかりません。

IPルックアップの場合、2つのホストが事前に知られている場合はDynamicDNSを使用することを検討してください。

これは古いスレッドですが、私はそれに出会ったばかりです。 STUNサーバー(またはNAT-PMP)を使用して、パブリックIPアドレス/ポートコンボを取得し、それを他の電話にSMSで送信できます。最初のデバイスでリスニングポートを開く限り、2番目のデバイスは、SMSで送信したpubli IPアドレス/ポートを使用して直接接続できます(SMSプッシュレジストリは、2番目のデバイスでアプリを自動的に起動して、これを行う)

開発中のアプリでこの問題に遭遇しました。 iPhoneからPCセルカードに接続しようとしていました。問題は、AT& TがiPhoneのモバイルターミネーションを有効にしないため、AT& Tネットワーク上の2台の電話が互いに接続することが物理的に不可能であることです。これは、AT& Tのアンテナエンジニアから直接のものです。

iPhone VPNをサーバーに接続してPCセルカードに接続することでこれを機能させることができましたが、それ以外では機能しませんでした。

iPhoneのアドレスはルーティングできないという非常に強い感情を持っています(証拠はありません)。もちろん、実際には演算子に依存しますが、AT& Tは10.x.x.xアドレスを提供します。

Appleには、Bonjourを使用してポートマッピングを実装するサンプル(デスクトップ)コードがあります。 UnPnPをサポートするWiFiルーター上。

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