안드로이드에서 서버 포트 열려 있는지 확인하기 (포트 체크)

프로그래밍/Android (Java)|2021. 1. 18. 15:16
반응형
안드로이드(자바)에서 포트가 열려 있는지 확인하는 두가지 간단한 방법입니다.
timeout 을 포함 방법입니다.

    Public String result;


        // onCreate 안에 넣기

        // thread 안에 넣어주고, 결과를 출력하기 위해 하단에서 처리되기를 기다립니다.

        Thread t = new Thread(new Runnable() {

            @Override

            public void run() {

                startScan();

            }

        });

        t.start();


        // 스레드 종료 기다리기

        try {

            t.join();

        } catch (Exception e) {

            e.printStackTrace();

        }


        Toast.makeText(getBaseContext(), "결과 : " + result, Toast.LENGTH_SHORT).show();



    // onCreate 바깥에 두기

    private void startScan() {

        result = "close"; // 기본값 (포트 접근되지 않을 경우)

        try {

            Socket socket = new Socket();

            socket.connect(new InetSocketAddress("8.8.8.8", 53), 1000);

            result = "open"; // 포트 접근 될 경우 값 변경

            socket.close();

        } catch (IOException e) {

        }


    }



아래는 다른 블로그에서 가져온 방법입니다.

availablePort 함수를 위와 같이 만들고 함수를 호출해서 
리턴 값으로 결과를 확인하면 됩니다.

boolean portCheck = availablePort("192.168.2.10", 80); // 체크할 서버 IP (String) 와 포트 (Int)

 

if (portCheck) {

    System.out.println("Open"); // 결과 메세지

} else {

    System.out.println("Close"); // 결과 메세지



public boolean availablePort(String host, int port) {

    boolean result = false;

 

    try {

        (new Socket(host, port)).close();

        result = true;

    }

    catch(Exception e) {

    }


    return result;

}


[출처] https://sinwho.tistory.com/entry/JAVA-%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-%ED%8F%AC%ED%8A%B8-%EC%97%B4%EB%A0%A4-%EC%9E%88%EB%8A%94%EC%A7%80-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0

반응형

댓글()