Je suis en train d'implémenter un socket en Java pour communiquer avec VMware-Workstation (Version: 8.0.0 build-471780).Problème dans la socket communicante et le talon VMware-Workstation
Je crée le socket avec: Socket socket = new Socket("localhost",8832);
, puisque j'exécute la machine virtuelle localement et que 8832 est le port que VMware écoute pour le débogage par defalut. La connexion n'est pas refusée ni aucune exception. Cependant, je suis en difficulté pour établir une communication entre mon processus et le talon de VMware.
Ces méthodes ne sont pas efficacement ou envoyaient recevoir quoi que ce soit du talon:
public void sendStr(String str) throws IOException {
out.write(str.getBytes());
}
public String getStr() throws IOException, ClassNotFoundException {//blocking call
byte[] byteArray = new byte[40];
in.read(byteArray);
return new String(byteArray);
}
La deuxième méthode ne se termine jamais, car il est un appel de blocage. Lorsque j'arrête le processus Java, ma machine virtuelle remarque la perte de la connexion du débogueur. Je peux donc dire que la connexion a été établie avec succès.
Quelqu'un peut-il m'aider ici? Je ne sais plus quoi faire.
Malheureusement, je ne peux pas exécuter le programme en dehors de la machine virtuelle. J'ai essayé comme tu l'as dit, mais ça dépend de la méthode 'getStr()'. Il arrive probablement quelque chose de similaire à 'sendStr()', mais seulement 'getStr()' bloque, donc je me bloque juste là. – onurbruno
Pouvez-vous courir à l'intérieur de la machine virtuelle alors? Si getStr se bloque, c'est parce que l'expéditeur n'envoie pas. Je voudrais ajouter un message de journal avant et après le writeUTF() pour voir s'il envoie. –
Vous avez raison, il n'envoie pas aussi! Le problème ne semble pas être lié à la connexion, puisque le fichier vmware.log dit: "Debug stub remote connection accepted" – onurbruno