-1
我正在一個免費的在線課程,網絡安全在這裏,他們要你創建一個Java端口掃描過程的https://cybersecuritybase.github.io/java的端口掃描器不工作
面值他們提供的一些代碼,並且添加了端口掃描部分和我遇到了問題。 Java不是我熟悉的語言,所以我覺得它很簡單,但似乎無法解決它。
代碼是在這裏
package sec.portscanner;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.InetSocketAddress;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
import java.io.IOException;
public class PortScanner {
final static int MIN_PORT = 1024;
final static int MAX_PORT = 49151;
public static void main(String[] args) throws Exception {
Scanner reader = new Scanner(System.in);
System.out.println("Which address should I scan?");
String address = reader.nextLine();
System.out.println("Start at port?");
int start = Integer.parseInt(reader.nextLine());
System.out.println("End at port?");
int end = Integer.parseInt(reader.nextLine());
Set<Integer> ports = getAccessiblePorts(address, start, end);
System.out.println("");
if (ports.isEmpty()) {
System.out.println("None found :(");
} else {
System.out.println("Found:");
ports.stream().forEach(p -> System.out.println("\t" + p));
}
}
public static Set<Integer> getAccessiblePorts(String address, int start, int end) {
Set<Integer> accessiblePorts = new TreeSet<>();
start = Math.max(start, MIN_PORT);
end = Math.min(end, MAX_PORT);
for (int port = start; port <= end; port++)
{
try {
Socket socket = new Socket();
socket.connect(new InetSocketAddress(address, port), 50000);
socket.close();
} catch(IOException e) {
System.out.println(e);
}
}
return accessiblePorts;
}
}
我創建的部分是for循環與插座掃描。無論我提供什麼地址,它總是打印出沒有找到,我不知道如何解決這個問題。任何指針將是巨大的我已搜查,並從我看到的沒有什麼脫穎而出錯誤的(至少我希望)
IM這樣做當然,我不知道s ** t關於java :)即時通訊有錯誤'java.net.ConnectException:連接被拒絕:連接',這意味着我的服務器沒有運行(谷歌搜索後),你遇到這種問題呢? – rockStar
'socket.connect()'中的50000是什麼?不要只說「端口」,因爲端口已經在'InetSocketAddress()'中。爲什麼不是這樣寫的:'socket.connect(new InetSocketAddress(address,port),port);'? – atonus