2

3 台の Android フォン (A、B、C) が同じアクセス ポイントに接続されているとします。したがって、各電話には異なる IP アドレスがあります。例えば:

  • A は 192.168.1.50 にあります
  • B は 192.168.1.60 です
  • C は 192.168.1.70 です

それぞれに同じアプリをインストールしました。このアプリには、2 つのUDPソケットがあります。

DatagramSocket sendSocket = new DatagramSocket();
DatagramSocket receiveSocket = new DatagramSocket(55000);

各電話は異なる IP アドレスにあるため、すべての電話は他のすべての電話にパケットを送信できます。たとえば、B から A にパケットを送信するには、次のようにします。

InetAddress address = InetAddress.getByName("192.168.1.50");
byte[] data = "Hello".getBytes();
DatagramPacket sendPacket = new DatagramPacket(data, data.length, address, 55000);
sendSocket.send(sendPacket);

問題は、同じマシン上で 3 つのエミュレーターを使用してこのアプリケーションを開発およびデバッグするための最良の方法は何かということです。これにより、エミュレーターで実行するコードが、実際のセットアップで実行するコードとほぼ同じになります。

私が行った試み:

  • ここで提供されているコードを使用して、同じマシンで 2 つのエミュレーターを起動し、それらの IP アドレスを出力して、両方のエミュレーターで同じ IP アドレスを取得しましたfe80::5054:ff:fe12:3456%eth0。だから行き止まり。
  • 2 つのエミュレーターのみを起動し、それぞれが受信ソケットと送信ソケット用の特定の異なるポートで起動しました。このアプローチは問題なく機能しますが、リダイレクトとデプロイがやや面倒で複雑になり始めるため、より多くのマシンでは使用できません。言うまでもなく、10.0.2.15 と 10.0.2.2 の IP アドレスをいじって動作させなければなりませんでした。
4

1 に答える 1

0

良いアイデアはありませんが、これは一種の回避策ですが、2 つの VM を作成し (VM にはVirtualBoxを使用していますが、無料です)、それらに Linux (おそらくUbuntu ) を配置し、SDK をインストールして、そこでテストするためのコード。

より良いアイデア: 複数の AVD を作成します。それぞれでアプリをデバッグします。ただ(Eclipseで)F11終了します。AVD を閉じます。他の AVD を起動します。AVD ごとに繰り返します。準備ができたら、それらをすべて起動し、エミュレーターのアプリ メニューからアプリを起動します。

于 2012-04-24T23:39:09.070 に答える