私が実際にやってみたいのは、Wi-Fiを介してメッセージをブロードキャストすることです(他のセルには私が作成したアプリがありますが、まだそのIPはわかりません)。 Wi-Fiを介してそのデバイスのIPを持つメッセージ、私は両方のデバイスが同じアプリケーションを実行している理想的な状況でこのシナリオを考えている私はちょうど他のデバイスに無線LAN経由でメッセージをブロードキャストする機能を追加したいと思ったまたはどのように?他のモバイルデバイスのIPアドレスを取得する方法は?
答えて
私はこのデモプログラムをJavaで作成しました。各ホスト(Androidデバイス)は、クライアントコードとサーバーコードの両方を実行します。クライアントはマルチキャストアドレスにIPアドレスを継続的に公開します。マルチキャストアドレスでは、他のすべてのデバイスがリスンして追跡しています。まったく同じデバイスは同じマルチキャストアドレス上のリスナーでもあるため、パケットを送信する際に他のアンドロイドを発見することができます。このアーキテクチャーはリソース使用量が非常に重く、まったくスケールされないことに注意してください。私は単純にデータグラムを再生するには、これを書いて、それはまた、マルチキャストパックは、Androidスタックによって除外されているので、あなたはので、あなたは、許可android.permission.CHANGE_WIFI_MULTICAST_STATE
が必要になりますAndroidの一部については、あなたの質問
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
public class Main {
public static final int PORT = 2345;
public static final String MULTICAST = "224.0.0.99";
/*
* A simple server that prints the name of the first
* device discovered and then terminates
*/
static class Server extends Thread{
@Override
public void run() {
try {
MulticastSocket socket = new MulticastSocket(PORT);
InetAddress group = InetAddress.getByName(MULTICAST);
socket.joinGroup(group);
byte[] buf = new byte[256];
// receive request
DatagramPacket packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
System.out.printf("SERVER receives: %s", new String(packet.getData()));
socket.leaveGroup(group);
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
/*
* This client send own IP address to all machines
* listening on MULTICAST
*/
static class Client extends Thread{
@Override
public void run() {
try {
MulticastSocket socket = new MulticastSocket();
socket.setBroadcast(true);
byte[] buffer = "I'm a new client. My IP is XXX.XXX.XXX.XXX".getBytes();
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, InetAddress.getByName(MULTICAST), PORT);
socket.send(packet);
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws InterruptedException {
new Server().start();
Thread.sleep(1000); // Make sure server started
new Client().start();
}
}
に最も近い答えを思わWifiManager.MulticastLock
WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
WifiManager.MulticastLock multicastLock = wm.createMulticastLock("mydebuginfo");
multicastLock.acquire();
私は数日前にこれについて正確に考えていました。私の結論は、あなたがDHCPを介して取得できるようにデバイスのIPで中継することはできず、毎回変更することができるということでした。だから、非常に簡単な方法は、電子メールに添付されたデータを送信し、それを受信者に送信することです。
データを読み取ることができるパーサー(XMLファイルで記述されていると仮定)を実装し、必要なものを受信側で実行する必要があります。これを達成するには、転送するファイルの種類の意図ACTION_VIEWに応答するために正しいコンポーネント(アクティビティ)を登録する必要があります。 XML。
希望すると助かります!
- 1. IPアドレスの取得方法
- 2. ホスト名/ IPアドレスのCNAME取得方法
- 3. モバイルデバイスのネットワークインターフェイスとIPアドレスを列挙する方法
- 4. Javaでクライアントの元のIPアドレスを取得する方法は?
- 5. Kubernetes:ネットワーク上の他のポッドのIPアドレスを取得する
- 6. WLANのIPアドレスを取得する方法は?
- 7. JavaScriptでクライアントのIPアドレスを取得する方法は?
- 8. asp.netコアでリモートクライアントのIPアドレスを取得する方法は?
- 9. WindowsシステムのローカルIPアドレスを取得する方法は?
- 10. クライアント/ユーザのIPアドレスを取得する方法は?
- 11. LaravelでユーザーのIPアドレスを取得する方法は?
- 12. クライアントのIPアドレスを取得する方法は?
- 13. boto3:CloudFormationスタックインスタンスのIPアドレスを取得する方法は?
- 14. アンドロイドでIPアドレスのホスト名を取得する方法は?
- 15. AndroidエミュレータのIPアドレスを取得する方法は?
- 16. IPアドレスの取得
- 17. 取得IPアドレス
- 18. 取得IPアドレス
- 19. IPアドレスを取得
- 20. 私のシステムのIPアドレスを取得する方法
- 21. アイデンティティサーバー4のクライアントのリモートIPアドレスを取得する方法
- 22. クライアントマシンのIPアドレスを取得
- 23. WebサービスでIPアドレスを取得する方法は?
- 24. node.jsで外部IPアドレスを取得する方法は?
- 25. JBossリモートEJBコールでクライアントIPアドレスを取得する方法は?
- 26. MeteorjsでIPアドレスを取得する方法は?
- 27. ホスト名でIPアドレスを取得する方法は?
- 28. C#、TcpClientからIPアドレスを取得する方法は?
- 29. プログラムでパブリックIPアドレスを取得する方法は?
- 30. AzureでクライアントのIPアドレスを取得する方法C#?
iPhone用のBonjourサービスのように思っているようですが、この質問をチェックしましたか? http://stackoverflow.com/questions/2474143/how-can-i-discover-zerocon-bonjour-services-on-android-im-having-trouble-wi –