我正在用Java寫一個端口掃描器。我正在使用for循環來計數從0到100的端口,在每個端口上構造一個套接字並查看它是否引發異常。但是,當我嘗試掃描非本地端口(例如「www.google.com」)時,它會掃描第一個端口,然後停止(字面上該程序正在等待),如果有人知道爲什麼我想知道這一點。 以下是掃描方法的代碼。請注意,變量ia是InetAddress對象在非本地主機上掃描端口
private void scan(int low, int high){
for(int port =low; port<high; port++){
try {
connection = new Socket(ia, port);
r.addPort(port);
System.out.println("port "+port+" open");
connection.close();
} catch (IOException e) {
System.out.println("port "+port+" not open");
}
}
}
這就是有多少系統針對端口掃描進行辯護。他們在沒有回覆的情況下丟棄你的SYN數據包,所以你的掃描器將永遠等待(或者直到超時),以便永遠不會響應。順便說它叫黑洞。 – biziclop