2012-12-10 3 views
1

다음 코드를 작성하여 ping을 시도했습니다. 내가 그것을 실행하지만, 다음과 같은 예외가 발생됩니다 : 왜 그렇게ping을 시도하는 중에 java.net.UnknownHostException이 발생합니다. 이유를 모르겠다

java.net.UnknownHostException: http://localhost:8084/server/index.jsp 
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) 
    at java.net.InetAddress$1.lookupAllHostAddr(Unknown Source) 
    at java.net.InetAddress.getAddressFromNameService(Unknown Source) 
    at java.net.InetAddress.getAllByName0(Unknown Source) 
    at java.net.InetAddress.getAllByName0(Unknown Source) 
    at java.net.InetAddress.getAllByName(Unknown Source) 
    at java.net.InetAddress.getByName(Unknown Source) 
    at Tester.main(Tester.java:10) 

import java.net.InetAddress; 

class Tester { 
public static void main(String args[]) { 
    try { 
     InetAddress address = InetAddress.getByName("http://localhost:8084/server/index.jsp"); 
     boolean isReachable = address.isReachable(2000); 
     if(isReachable) 
     System.out.println("The address is reachable"); 
     else 
     System.out.println("The address is not reachable"); 

    } catch(Exception exc) { 
     exc.printStackTrace(); 
     } 
} 
} 

입니까? 서버가 실행 중이고 페이지가 웹 브라우저에서 정상적으로 열리고 있습니다.

+0

InetAddress.getByName ("host")은 프로토콜이 아닌 호스트 이름을 허용합니다. 예를 들어 호스트가 "localhost : 8084/server/abc/page.jsp"이면 – carminePat

답변

5

문제는이 라인에 차단하는 firewall 뒤에 도메인이 때문에 :

InetAddress address = InetAddress.getByName(
     "http://localhost:8084/server/index.jsp"); 

InetAddress.getByName(String) 방법은 호스트 이름을 필요로한다. URL 문자열을 지정했습니다. 해당 주소의 호스트 이름 구성 요소는 "localhost"입니다. 당신이에 "핑 (ping)"는 URL과 관련된 호스트를하려면

, 당신은 URL을 구문 분석하고이 같은 호스트 이름 구성 요소 뭔가 추출해야합니다

String hostname = new URL(str).getHost(); 

을하지만 당신은 경우 어디에서 처리 할 필요 URL 형식이 잘못되었거나 호스트 이름 구성 요소가없는 경우


난 당신이 "localhost"에 ICMP_PING 요청을 전송하기 때문에 실제로는, 다른 호스트 이름을 테스트하기 위해 노력하고 있다고 상상 (일반적으로 127.0.0.1)는 가지 의미가있다.

+0

이 _localhost_의 네트워크 주소는 'http : //192.168.43.187 : 8084/server/index.jsp'와 같습니다. 클라이언트가 처음에 서버에 어떻게 연결되었는지, 서버에 연결되어 있는지 다시 확인하십시오. 그래서 저는 이것을하려고했습니다. – saplingPro

+0

주소에 대한 클라이언트 ping은 어떻게합니까 : 'http://192.168.43.187:8084/server/index.jsp'? – saplingPro

+1

1) "localhost"라는 이름은 일반적으로 '127.0.0.1'과 같은 룩백 주소에 바인딩됩니다. 루프백이 아닌 주소에 바인드되어 있으면 네트워크 구성에 약간 문제가있는 것입니다. 2) URL에서 호스트 이름을 추출하는 방법에 대한 내 대답에 대한 업데이트를 참조하십시오. 3) 주소로 URL을 참조하여 중지하십시오. 그것은 자원 로케이터입니다 ... 주소가 아닙니다. –

0

ping 요청

+3

이 작동합니다. 그러면 'UnknownHostException'이 발생하지 않습니다. –

0

getByName은 URL이 아닌 매개 변수로 호스트 이름 또는 IP 주소를 사용합니다.