У меня есть следующий фрагмент кода, который проверяет, открыт ли порт 443 на данном хосте.Как ускорить сканирование портов 443 в Java
import java.net.*;
import java.io.IOException;
public class Scan {
public static void main (String[] args) {
String host="put hostname here";
int port=443;
try{
Socket s = new Socket(host,port);
System.out.println("Can listen on port "+port+
" in host "+host+" is open");
} //end try
catch (IOException ex)
{
//remote host is not listening on port 443
System.out.println("Can not listen on port "+port+
" of host "+host);
} //end catch
}
}
Мой вопрос: Если порт 443 не открыт в определенном хозяине, это делает мою программу очень медленно, так как мне нужно, чтобы проверить группу хостов. Есть ли способ улучшить код, чтобы ускорить сканирование порта 443, одновременно сохраняя надежность? Есть ли способы использования java-программирования для сканирования портов, кроме использования сокетов?
Пожалуйста, не проверяйте, что проверка перед сканированием не поможет, поскольку имена хостов, которые у меня подключены, мне нужно только проверить, открыт или закрыт порт 443.
Возможный дубликат [Установить таймаут для сокета] (http://stackoverflow.com/questions/4969760/set-timeout-for-socket) – assylias
На самом деле не точный дубликат, моя ошибка. Вы можете сканировать разные хосты в разных потоках (то есть параллельно). – assylias