VMware-Workstation(Version:8.0.0 build-471780)との通信用にJavaでソケットを実装しています。ソケットとVMware-Workstationスタブの通信に関する問題
私は仮想マシンをローカルで実行しているので、Socket socket = new Socket("localhost",8832);
でソケットを作成し、8832はVMwareがdefalutによるデバッグをリッスンするポートです。 接続が拒否されていないか、何らかの例外がスローされていません。 しかし、私は自分のプロセスとVMwareスタブとの間の通信を確立するのが面倒です。
これらの方法は効果的に送信するか、またはスタブからは何も受けていない:それはブロッキング・コールだから
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);
}
第2の方法は、決して終わりません。
Javaプロセスを終了すると、仮想マシンはデバッガの接続が失われたことに気づくため、接続が正常に完了したと言うことができます。
誰かが私を助けることができますか?もう何をすべきかわからない。
残念ながら、私は仮想マシンの外でプログラムを実行することはできません使用することです。私はあなたの言った方法を試しましたが、 'getStr()'メソッドでハングします。おそらく、 'sendStr()'でも同様のことが起こっていますが、 'getStr()'だけがブロックされているので、そこにハングアップします。 – onurbruno
仮想マシンの内部で実行できますか?送信者が送信していないためにgetStrがハングする場合。 writeUTF()の前と後にログメッセージを追加して送信しているかどうかを確認します。 –
あなたはそうです、それはまた送信していません! vmware.logファイルに "Debug stub remote connection accepted"と表示されているので、接続に問題はありません。 – onurbruno