Primo: scusa per il mio inglese, non sono "autore nativo".Ricevi messaggio broadcast su Android
Invio un messaggio broadcast in C++ e desidero riceverlo sul dispositivo Android. Ho creato tale codice:
System.out.println("receiveBroadcast()");
DatagramSocket socket = new DatagramSocket(3866);
socket.setBroadcast(true);
System.out.println("Listen on " + socket.getLocalAddress() + " from " + socket.getInetAddress() + " port " + socket.getBroadcast());
byte[] buf = new byte[512];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
while (true) {
System.out.println("Waiting for data");
socket.receive(packet);
System.out.println(packet.getAddress());
System.out.println("Data received");
}
Funziona quando compilo come Java Standard applicazione console SE ed eseguito su un altro computer connesso alla rete. Non funziona su Android e non ho idea del perché. Su Android è solo attesa di dati, ma non lo riceve:
03-18 15:47:05.045: I/System.out(16651): receiveBroadcast()
03-18 15:47:05.055: I/System.out(16651): Listen on /:: from null port true
03-18 15:47:05.065: I/System.out(16651): Waiting for data
ciò che è interessante, quando l'eseguo come standard Java Applicazione console in sistema di Windows, invece di "Listen on/:: dal porto nulla vero" io ottieni "Ascolta su 0.0.0.0/0.0.0.0 da null port true".
ho nel manifestare tale permesso:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
prega, aiuto!
Vedere questo - http://code.google.com/p/boxeeremote/wiki/AndroidUDP. Se lo fai funzionare, puoi rispondere alla tua stessa domanda per i futuri visitatori. – Shade
Grazie per il link. L'ho scritto nei dettagli ma sfortunatamente non c'è un consiglio che risolva il mio problema. Ho provato questo codice Java su un altro PC che utilizza la comunicazione wireless e funziona anche lì. Di sicuro il problema è in Android, ma ancora non so come risolverlo. –
Hai implementato il metodo getBroadcastAddress dal link? Penso che il tuo problema stia ottenendo l'indirizzo da legare. Ricorda che i phohes Android hanno in genere almeno due interfacce: WiFi e mobile. – Shade