Как определить, какой из первых 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