Java端口扫描器
输出:Java端口扫描器,java,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);
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);
}
我使用while循环,因为它速度更快,现在要问的问题是,为什么它只扫描一个端口 您需要暂时更改此选项:
Server is not listening on port 0 of 69.163.44.171
BUILD SUCCESSFUL (total time: 0 seconds)
while(i您需要暂时更改此选项:
Server is not listening on port 0 of 69.163.44.171
BUILD SUCCESSFUL (total time: 0 seconds)
while(i你说的是while(i==55000)
而不是while(i你说的是while(i==55000)
而不是while(i这部分:
while(i <= 55000)
只要i
恰好是55000,就会重复循环
由于i
开始时为0,然后递增为1,因此它将永远不会到达值为55000的位置,因此永远不会重新启动循环。此部分:
while(i <= 55000)
只要i
恰好是55000,就会重复循环
由于i
开始时为0,然后增加到1,因此它将永远不会到达值为55000的位置,因此也不会重新启动循环。好吧……您认为条件而(i==55000)
会为真?好吧……您认为条件而(i==55000)
是否为正确
?while条件错误已在多个答案中指出,因此我不会重复。不过,我可能会提出一个建议:如果您使用一个和一些,而不是一次尝试一个,您可能可以更快地完成此操作。一些阅读材料。while条件错误已在多个答案中指出,因此我将不要重复了。不过我可能会提出一个建议:如果你一次使用一个和一些,而不是一次尝试一个,你可能会更快。一些阅读材料。编译器错误:在之后缺少;
,而(I==55000)
并且使用正常的for
将使代码更具可读性…(a)这个程序是网络绑定的。如何循环与它的性能完全无关。(b)这是一个“do”循环而不是“while”循环。(c)比什么快?为什么?这个while循环太快了,它甚至没有循环。一个逻辑错误得到了2次投票?我闻到袜子的味道……编译器错误:缺少;
在之后while(I==55000)
并且对
使用普通的将使代码更具可读性…(a)该程序受网络限制。如何循环与它的性能完全无关。(b)这是一个“do”循环而不是“while”循环。(c)比什么快?为什么?这个while循环太快了,甚至没有循环。一个逻辑错误得到了2次投票?我闻到了袜子的味道。。。