2011-01-18 18 views
1

iPhone(または携帯電話ネットワーク上の他のデバイス)がソケットで待ち受けて、他のiPhoneがAT &Tネットワーク(P2P)経由で接続するのを待つことはできますか?私たちは私たちのローカルネットワーク上でこれを成功させることができますが、AT & Tネットワークではできません。携帯電話データのiPhoneソケットリスナー

答えて

3

私はAT & Tの顧客ではありませんが、3Gネットワ​​ーク上のデバイスは、ほとんどの場合、一般に知られているようにNetwork Address Translation、または「NAT」という形式の後ろにあります。

ほとんど確実に両方の(おそらく別個の)NATの後ろにあるデバイス間の双方向通信を望む場合、問題のNATをいくつかトラバースする方法が必要です。 Session Traversal Utilities for NAT、または「STUN」と入力してください。また、一般的なネットワークhole-punching技術を見てください。

リバースMITライセンスの下で、TCMPortMapperの名前でNATトラバーサルのためのObjective-C/Cocoaフレームワークがあります。それはあなたにすべての方法を得ることができるかもしれないUPnPおよびNAT-PMPのためのサポートを提供します - AT & T(または他のTelco)があなたにポートを要求できるかどうかによって異なります。

上記のフレームワークでは不十分な場合は、2つのデバイス間の接続を仲介するために、よく知られている(つまり、ワイドオープンインターネットの)中継サーバーを用意する必要があります。これはSkype、Hamachi、Xbox Liveなどのサービスで一般的に使用されている方法です。がんばろう!

+0

ありがとうございました:)それが私たちがやったことです(リレーサーバー)。あまりにもこの答えが早く来ることができなかった悪い:( – irwinb

0

私はiPhoneのスペシャリストではありませんが、それはiPhone上で利用できるトランスポート層にかなり依存しています。 UDPとTCPが利用可能であれば、チャンスがあります。 iPhoneがパブリックIPアドレスを持っていれば(これは私が疑う)、これはあなたの幸運な日です。答えは「はい」です(少なくとも理論的には)。

UDPのリスナーを簡単に実装し、リモート接続を確立するためのボイラープレートコードを実装することができます。しかし、ピアの公開IPアドレスを見つける(ピアを発見する)など、より複雑な問題を解決しなければならないことにすぐ気づくでしょう。

これが複雑すぎる場合は、JXTA(またはJXSE、Javaでの実装)などのP2Pフレームワークを調べることをお勧めします。ちなみに、JXTA/JXSEは、プライベートIPアドレスを持つピアで動作します。私は、JXSEがAndroidでもうまく移植されていると聞いています。