Je souhaite communiquer deux émulateurs via DatagramSocket dans Android. Chacun d'eux est un nœud dans un système P2P. Ainsi, chacun d'eux a un Thread serveur et un Thread client (créé par événement GUI). Voici comment je crée le serveurInstances d'émulation d'interconnexion Android
public static final String SERVERIP = "10.0.2.15";
//...
run() {
InetAddress serverAddr = InetAddress.getByName(SERVERIP);
DatagramSocket socket = new DatagramSocket(SERVERPORT,serverAddr);
while(true) {
byte[] buf = new byte[29];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
//...
}
}
Le port est donné par l'utilisateur lors de l'initialisation de l'application. La partie client (demande des données)
InetAddress serverAddr = InetAddress.getByName("10.0.2.2");
//...
Log.i("Requester", "Trying to connect to device port = "+target);
DatagramSocket socketJ = new DatagramSocket();
byte[] bufJ = Adaptor.createStringMsg(Adaptor.createJoingMsg(id, Location.getX(), Location.getY())).getBytes();
DatagramPacket packetJ = new DatagramPacket(bufJ, bufJ.length, serverAddr, target);
Log.i("Requester", "Sending: '" + new String(bufJ) + "'");
socketJ.send(packetJ);
Log.i("Requester", "Done.");
Quelques informations supplémentaires. Le Node1 (emulatorA) a un serveur sur le port 8000 et Node2 (emulatorB) a un serveur sur le port 8001. Le port cible pour "partie client" est correctement lu. Que essayé de faire est de définir la redirection en tant que tel:
//emulatorA
redir add tcp:8000:8000
//emulatorB
redir add tcp:8001:8001
Cependant je ne peux pas obtenir toute communication beetwen ces 2 émulateurs. Pour autant que j'ai compris le tutoriel Android à ce sujet devrait fonctionner comme ceci redir add tcp:localhostPort:emulatorPort
. Je suis coincé avec ça: /. Quelqu'un peut-il me signaler l'erreur ou donner de bons conseils? Pour l'enregistrement pendant que je testais la communication sur un seul appareil (client simulant un autre nœud) tout fonctionnait, donc je ne pense pas qu'il y ait un bug dans le code. Btw est-ce que quelqu'un sait comment puis-je obtenir 2 jeux de logs pour ces 2 émulateurs (logA, logB)? Cela m'aiderait beaucoup.
@Fred Grott Oui J'ai connecté via telnet à chaque émulateur. Merci pour la pointe avec des bûches.
avez-vous fait un port console telnet localhost avant le redir? –
pour les journaux pousser/tirer les fichiers journaux hors de l'émulateur –