Java端口扫描程序

时间:2010-03-01 20:26:46

标签: java

import java.net.Socket;
import java.io.IOException;

public class Main {


    public static void main(String[] args) {
       String remote = "69.163.44.171";
       int i = 0;
       do {
       try {
       Socket s = new Socket(remote,i);
       System.out.println("Server is listening on port " + i+ " of " + remote);
       s.close();

       } catch (IOException ex) {
       System.out.println("Server is not listening on port " + i+ " of " + remote);
    }
       i++;
       } while(i == 55000);
}

输出:

Server is not listening on port 0 of 69.163.44.171
BUILD SUCCESSFUL (total time: 0 seconds)

我使用while循环导致它更快,现在问题为什么它只扫描一个端口?

5 个答案:

答案 0 :(得分:3)

嗯......

答案 1 :(得分:2)

你需要改变这一点:

while(i <= 55000)

目前你正在到达i(这是1)!= 55000,所以你退出了循环。

答案 2 :(得分:2)

这部分:

} while(i == 55000)
只要 i 完全 55000,

就会重复循环

由于i从0开始并在此之后增加到1,它将永远不会到达那个值为55000的地方,因此永远不会重新启动循环。

答案 3 :(得分:1)

您说的是while(i == 55000)而不是while(i <= 55000)

答案 4 :(得分:0)

在几个答案中已经注意到while条件错误,所以我不再重复了。我可能会提出一个建议:如果你使用Selector和一些SocketChannels而不是一次尝试一个Here's,你可以更快地做到这一点。 {{3}}一些阅读材料。