2011-08-10 7 views
1

私はVMWareでプログラムをテストしたいと思っています。だから、私はVMWareでプログラムを実行しました。そのマシンでipconfigコマンドを使用すると、192.168.XXX.XXXのようなIPが得られます。このIPには、いくつかのポートでリッスンするサーバーソケットがあります。誰かがそれを話す必要があるとき、それはこの192.168.xxx.xxx IPに(ソケットs =新しいソケット(IP、ポート)を使用して)細かく接続します。 しかし、プログラムの内部でsocket.getInetAdress()を呼び出すと、192.168.x.xのIPが返されますが、代わりに0.0.0.0が返され、シミュレーションは失敗します。プログラムがVMWareで実行されているときのソケットのIP

どうすればよいですか? Thanx in advance:

答えて

1

これはVMWareの問題ではなくJavaの問題です。私は、サーバがバインドされているIPだけでなく、マシンのIPを取得しようとしていると仮定しています。 。その場合には、いくつかの提案された解決策のためにこの質問を参照してください。 InetAddress.getLocalHost(); のようなものは、ホスト名を取得し、それからipAddressのをルックアップするのでjava InetAddress.getLocalHost(); returns 127.0.0.1 ... how to get REAL IP?

1

0.0.0.0は、特定のIPアドレスではなく、使用可能なすべてのローカルIPアドレスにバインドされていることを意味します。ワイルドカードIPを使用してバインドされているリッスンサーバーの場合は、これが正常です。

0

これがそうですあなたのVMがそのホスト名をlocalhostに解決すれば、127.0.0.1が得られます。これはおそらく起こっていることです。外部ネットワークインターフェイスからIPアドレスを取得する必要があります。

Enumeration netInterfaces=NetworkInterface.getNetworkInterfaces(); 
    while(netInterfaces.hasMoreElements()){ 
     NetworkInterface ni=(NetworkInterface)netInterfaces.nextElement();   
     InetAddress ip=(InetAddress) ni.getInetAddresses().nextElement(); 
     System.out.println(ni.getName()+" "+ip.getAddress()); 
    } 

はこれを実行してみてください

関連する問題