Проверка, открыт ли порт сервера с Android - PullRequest
6 голосов
/ 12 ноября 2011

Я пытаюсь подключиться к удаленному серверу с моего устройства Android.Как проверить, открыт ли определенный порт на моем сервере?Например.как проверить, открыт ли порт 80 на моем сервере 11.11.11.11?

В настоящее время я использую InetAddress для проверки связи, если хост доступен, но это не говорит мне, открыт ли порт 80.

Текущий код

boolean isAvailable = false;
try {
    isAvailable = InetAddress.getByName("11.11.11.11").isReachable(2000);
    if (isAvailable == true) {
       //host is reachable
       doSomething();
    }
} catch (Exception e) {

}

Ответы [ 2 ]

8 голосов
/ 08 октября 2013

Создайте Socket , который проверит, может ли данный ip с конкретным портом быть подключен или нет.

public static boolean isPortOpen(final String ip, final int port, final int timeout) {

    try {
        Socket socket = new Socket();
        socket.connect(new InetSocketAddress(ip, port), timeout);
        socket.close();
        return true;
    } 

    catch(ConnectException ce){
        ce.printStackTrace();
        return false;
    }

    catch (Exception ex) {
        ex.printStackTrace();
        return false;
    }
}     
1 голос
/ 08 мая 2017

Runtime.getRuntime (). Exec () и передайте ему команду, чтобы получить различную запись порта с pid. Команды ниже:

«cat / proc / net / tcp», «cat / proc / net / tcp6», «cat / proc / net / udp», «cat /proc/net/udp6cessed.

»

Вот объяснение с исходным кодом. Я проверил это. :

http://kickwe.com/tutorial/android-port-scanner-tutorial/

...