Как определить, какой из первых 1024 портов, по-видимому, размещает серверы на основе TCP на указанном хосте?

Я хочу решить свою проблему, используя и я использую язык программирования Java.

2 ответа

Просто попробуйте подключиться к ним с помощью сокета. Если вы не получаете ConnectException, что-то прослушивает этот порт TCP. Затем сделайте одолжение серверу и немедленно закройте сокет.

Какова цель именно?

Это простой код для подключения к сокету с таймаутом

// Create a socket with a timeout
try {
    InetAddress addr = InetAddress.getByName("java.sun.com");
    int port = 80;
    SocketAddress sockaddr = new InetSocketAddress(addr, port);

    // Create an unbound socket
    Socket sock = new Socket();

    // This method will block no more than timeoutMs.
    // If the timeout occurs, SocketTimeoutException is thrown.
    int timeoutMs = 2000;   // 2 seconds
    sock.connect(sockaddr, timeoutMs);
} catch (UnknownHostException e) {
} catch (SocketTimeoutException e) {
    // Could not reach host - network error.
} catch (IOException e) {
    // Network error
}

Вы можете просто запустить этот код в цикле, чтобы проверить ряд портов.

ПРИМЕЧАНИЕ: реальные сканеры портов гораздо сложнее: http://art-exploitation.org.ua/7261final/lib0021.html

Другие вопросы по тегам