2009-05-01 13 views
9

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

私は各デバイスのIPを発見して直接接続しようとしています。私はそれがBonjourでできることは知っていますが、それはローカルネットワーク上でしか動作しません。私は、インターネット上の2つのデバイス間の高速接続が必要です。

ありがとうございました。

+0

なぜ主観的? –

+1

私はこれにどのように接近すべきか/そうでなければならないかについての意見は誰にでも公開されているので、主観的です。ありがとう! –

+1

それは主観的な意味ではありません。これはかなり客観的です。再タグ付けされました。私もリアルタイムで削除しています。これはその意味で「リアルタイム」ではないからです。 –

答えて

9

両方のIPを持っていて、両方がルーティング可能だった場合は、可能である必要があります。私は3Gネットワ​​ークによって与えられたIPがルーティング可能であるかどうかはわかりません。 WIFIを使用している場合、取得するIPはほとんど確実にルーティングできません。あなたがルーティング可能なIPを持っていると仮定すれば、それは可能でなければなりません。

このトリックは、他のデバイスのIPを検出しているだけです。それを行う最善の方法は、おそらく、あなたのアプリが起動したときに各デバイスにWebサービスを登録させてから、そのサービスに問い合わせて他のデバイスのIPを見つけることです。

アプリの終了時やIPの変更時に「登録解除」しているIPを管理するのが少し面倒かもしれませんが、実行可能にする必要があります。

ETA:

あなたは、彼らは、あなたがそのサーバーを使用してソリューションを実装することができるはずに接続することができ、両方のサーバーを持っている場合(すなわち、実際には互いに直接接続する電話なし)。これは、電話機のためにルーティング可能なIPを有することの問題を回避する。

ソケットをつなぎ合わせる方法については、サーバプログラムは基本的に古い学校の電話交換機のように動作します。電話機がサーバに登録したり、サーバに現在接続されている他の電話機のリストを照会したり、通話したい電話機を指定したり、電話機を登録したりすることができるサーバソフトウェアに組み込まれた登録プロトコル&があります。他の電話機からの接続を受け入れます。

誰と誰と話したいのかが分かれば、サーバーソフトウェアは、1つの電話のソケットから読み取って、そのデータを別の電話のソケットに書き込むことで、2つを一緒に接続します。

+0

私は、Webサーバー上の各デバイスのIPの登録に挑戦することができます。しかし、私はあなたがWi-Fiと3Gについておそらく/おそらくルーティング可能ではないと言ったことに懸念しています。 Wi-Fiでしか接続できないiPod touchでも動作するようにしたいと考えています。 Webサーバーをセットアップできます。私は、各デバイスが(永続的な?)ソケットでサーバーに接続できると推測しています。私はちょうどサーバー上の2つの接続/ソケット間でデータを渡す方法を知らない。また、これは十分速くなることに懸念がありますか? –

+0

また、あなたのフィードバックのおかげで、私は水があまり泥でなくなっているように感じます。 –

+0

OK、私の応答を詳細に編集しました。パフォーマンスに関しては、サーバーの速度と同時に処理する必要がある同時接続数に大きく依存します。適切に実装されたサーバーでは、電話と電話の直接接続とほぼ同じ速さでなければなりません。 –

2

提案のみですが、3人目のサイトに接続することができれば、それぞれのアドレスを知ることができます。電話機Aのアドレスを電話機B(および/または電話機Bを電話機A)に送信してから、適切に接続します。

1

3.0の機能をすべて見てきましたか?具体的にはピアネットワーキング(その存在は公開されている)。

+1

3.0のピアはWANとBluetoothです。私はそれらが働いているだけで私は3番目の層を追加したい –

1

WiFiルーターには、内部ホスト(この場合はiPhone)が特定のポートに接続されていることをルーターに知らせる「ポートトリガー」機能があります。 iPhoneがこのプロトコルをサポートしているかどうかはわかりません。そうでない場合は二つのホストが事前に知られている、またはカスタムWebサービス上に述べたようにしている場合は、ダイナミックDNSを使用することを検討してIP検索の

(つまり、友人はお互いを発見見知らぬ人対ホスト名を交換する)

0

私はiPhoneのアドレスがルーティング不可能になるという非常に強い感情(証拠はない)を持っています。もちろん、それは実際にはオペレータに依存しますが、AT &は10.x.x.xアドレスを提供します。

Appleには、Bonjourを使用してUnPnPをサポートするWiFiルーターでポートマッピングを実装するsample (desktop) codeがあります。

1

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

1

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

iPhone VPNをサーバーに入れてからPCのセルカードに接続することで、これを動作させることができましたが、それ以外の場合は動作しませんでした。

関連する問題