Diễn đàn không làm lập trình nhưng có nhiều cao nhân.Em đã bí lối không làm được nên em xin phép lại chạy lên hỏi code ạ mong các pro giúp hay gợi ý cho chút ạ. Em muốn viết một chương trình dùng để check xem port của ip nó mở hay chưa. 1.Socket java bình thường=>Nhược tốc độ chậm,xem lý thuyết thì check bằng TCP SYN nó có thể nhanh hơn gấp chục lần Code: public static String checkPort(String ip) { try (Socket socket = new Socket()) { socket.connect(new InetSocketAddress(ip, 22), 6000); } } nmap -sS đã áp dụng TCP SYN nó nhanh hơn nhưng không hỗ trợ luồng.Có cố cũng ko được do nmap nó nặng quá Code: private static void checkPortNmap(String ip) { ProcessBuilder processBuilder = new ProcessBuilder().redirectErrorStream(true); processBuilder.command("bash", "-c", "nmap -Pn -sS -p22 " + ip); } Em được tư vấn tìm hiểu được cách sử dụng thư viện dưới đây. https://www.savarese.com/software/rocksaw/ =>Vấn đề của em là 1.Làm sao để nhúng cái thư viện kia vào project của mình trước đã mình chưa từng làm jni bao giờ mà khái niệm nó cũng khó hiểu quá 2.Nếu bác nào đã làm thì cho em cái mã thì tốt quá ạ
Nhanh nhất là dùng nmap để scan. M chưa thấy thư viện nào scan nhanh hơn nmap cả, scan quá nhanh, thì có thể router sẽ không chịu được, và cho kết quả sai. Dùng nmap scan port 22 của 4 tỉ IPv4 hết khoảng vài ngày. Tuỳ thuộc vào cái router nhà b nữa.
trong trường hợp của bác thì cứ hiểu nôm na nó là 1 lần check. 1 phiên TCP nó xác thực kết nối thông qua bắt tay ba bước, SYN là bước đầu tiên. 1 bước có thể tạm gọi là 1 package tùy trường hợp