2017-11-11 8 views
-1

私の目標は、2台のAndroidデバイス間のピアツーピア接続を確立することです。この目標を達成するために、私はプロトコルmqttを選択しました。 最初のデバイスでブローカーを開始し、最初のデバイスに接続する2番目のブローカーを開始したいとします。私はこの方法でブローカーを作成します。デバイスをmqttブローカーとして使用するにはどうすればよいですか?

私は、サーバーを作成しますが、デフォルトURIがTCPであるその後のGradleへ

dependencies { 
compile 'io.moquette:moquette-netty-parser:0.8.1' 
compile 'io.moquette:moquette-broker:0.8.1' 
compile 'io.moquette:moquette-parser-commons:0.8.1'} 

をこれらの依存関係を追加しました:// localhostを:1883そう第2のデバイスは、私は接続することができます両方のデバイスが同じwi-fiポイントに接続されている場合にのみ、このブローカーに送信します。

broker = new Server(); 
    try { 
     MemoryConfig memoryConfig = new MemoryConfig(new Properties()); 
     memoryConfig.setProperty(BrokerConstants.PERSISTENT_STORE_PROPERTY_NAME, 
       Environment.getExternalStorageDirectory().getAbsolutePath()+ File.separator 
         + BrokerConstants.DEFAULT_MOQUETTE_STORE_MAP_DB_FILENAME); 
     broker.startServer(memoryConfig); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

そして私は、私はデバイスがWi-Fiは異なる点に接続されている場合でも、ブローカーに接続することができまたは3G/4Gを使用したいアンドロイド

compile 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0' 
compile 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1' 

ためPAHOライブラリを使用します。

私は正直に数日間解決策を見つけようとしましたが、成功しませんでした。私は本当にこれを達成する方法を知らない。 したがって、2つの質問があります。私がやりたいことは可能でしょうか?そしてどうやって?

+0

MQTT接続については、この例を参照してください。 https://stackoverflow.com/questions/43038597/android-studio-mqtt-not-connecting?answertab=active#tab-topこの例では、 'Activity'で接続アクションを実行しますが、' Service' ' –

答えて

0

localhostはこのマシンを意味するので、同じネットワーク/サブネットではなく、ブローカと同じデバイス上のブローカに接続するためにのみ使用できます。別のマシンに接続する場合は、接続先のマシンのIPアドレスを知る必要があります。これは、あなたが接続したいリモートデバイスのIPアドレスをどのように見つけるかの鶏卵状態につながります。

ただし、モバイルネットワークまたは家庭用ブロードバンドネットワークはNATの背後にある傾向があります。これらのデバイスに接続する方法はありません。

クラウドサーバのようなものにホストされている中央ブローカの利点の1つは、すべてのデバイスが中央ブローカ経由でNATゲートウェイの背後にあっても、そのデバイスに接続して情報を共有できることです。

3G/4G /ホームブロードバンドで直接ピアツーピア接続を試みることはできません。

+0

サードパーティのサーバでこれを実装するにはどうすればいいのか教えていただけますか? CloudMqttがあり、私の仕事はその助けを借りて実現できると知っていますが、他の選択肢はありますか?私はどんな助けにも感謝します。 – Mikhail

関連する問題