2011-08-10 1 views
1

VMWare로 프로그램을 테스트하고 싶습니다. 그래서 저는 VMWare에서 프로그램을 실행했습니다. 그 컴퓨터에서 ipconfig 명령을 사용하면 192.168.XXX.XXX와 같은 IP를 얻을 수 있습니다. 이 IP에는 일부 포트에서 수신 대기하는 서버 소켓이 있습니다. 누군가가 말하기를 원할 때,이 소켓은 192.168.xxx.xxx IP에 잘 연결됩니다 (Socket = new Socket (IP, port) 사용). 그러나 프로그램 내부에서 socket.getInetAdress()를 호출하면 192.168.x.x IP를 반환하지만 대신 0.0.0.0을 반환하고 시뮬레이션이 실패합니다.소켓의 IP가 VMWare에서 실행될 때

어떻게해야합니까? 고맙습니다 :

답변

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()); 
    }