java - 扫描非本地主机上的端口

标签 java network-programming port-scanning

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

最佳答案

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

connection.setSoTimeout(10*1000);//毫秒

关于java - 扫描非本地主机上的端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10788576/

相关文章:

c - 使用 newSocket.sin_port = htons(portNumber) 将端口号分配给套接字时出错;

c++ - 验证 IP 地址已发布的简单方法

使用 Scapy 进行 TCP 空扫描

c - C++ 中的端口扫描器挂起

java - 不会在 for 循环中打印 x

java - 在我的 Maven 项目中无法使用 Junit 4.12 解析 'junit'

java - 无论 RAM 大小或 docker 配置,我都会收到警告 "Container memory limit unset. Configuring JVM for 1G container."

javascript - 如何使用 javascript 将 servlet 响应传递给 html 文本

Python socket.connect 有时会挂起

python - 制作快速端口扫描器