강좌 & 팁
글 수 2,412
2013.03.09 18:50:44 (*.52.177.249)
46368
Java에서 핑 테스트를 하는 아주 간단한 소스입니다.
가끔 다른 컴퓨터와의 통신 연결 상태를 알아봐야 할때가 있는데...
네트워크 연결이 되어있는지 안되어있는지....
그때 주로 커멘드창에서 ping테스트를 하는데....
커멘드창에서 하지않고 프로그램에서 직접 해야 할때가 있습니다.
그때, 사용면 되겠죠!!!
[형식]
InetAddress.isReachable(타임아웃시간); |
[API 내용]
Test whether that address is reachable. Best effort is made by the implementation to try to reach the host, but firewalls and server configuration may block requests resulting in a unreachable status while some specific ports may be accessible. A typical implementation will use ICMP ECHO REQUESTs if the privilege can be obtained, otherwise it will try to establish a TCP connection on port 7 (Echo) of the destination host. The timeout value, in milliseconds, indicates the maximum amount of time the try should take. If the operation times out before getting an answer, the host is deemed unreachable. A negative value will result in an IllegalArgumentException being thrown. Parameters: timeout - the time, in milliseconds, before the call aborts Returns: a boolean indicating if the address is reachable.
에휴~!! 참 좋은 내용이 써있죠??? ^^;
구글님의 번역의하면....
대상 호스트의 포트7번에 TCP연결 설정하고 ICMP에코 요청을 사용한다고 되어있습니다.
포트7번이 막혀있다면 소용이 없겠지만......ㅡㅡ;
일단, 안막혔다는 가정하에.....
[샘플소스]
import java.net.InetAddress; public class JavaPingTest { /** * @param args */ public static void main(String[] args) { try { InetAddress tagetIp = InetAddress.getByName("192.168.2.131"); boolean reachable = tagetIp.isReachable(2000); if (reachable) { System.out.println("Test OK!!!"); } else { System.out.println("Test NG!!!"); } } catch (Exception e) { e.printStackTrace(); } } }
위 샘플 소스를 실행시키면...
내컴퓨터와 연결 대상 컴퓨터와 네트워크 통신이 되는지 알수 있겠죠...
타임아웃을 2초로 했는데.... 2초가 제일 안전한것 같습니다.
1초미만이 되어버리면 실제 커멘드창에서 핑을 치면 잘되는데....
프로그램으로 하면 안되는 경우가 있더라구요...일단 참고 해주세요.
감사합니다.