1

我正在用 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");
    }
}
}
4

1 回答 1

3

尝试在套接字上设置超时。它会更快地失败。

connection.setSoTimeout(10*1000); // milliseconds

于 2012-05-28T18:03:23.640 回答