实现原理

通过能否正常建立socket连接,来判断端口是否开启。
输入需要扫描的端口范围,通过开启多线程来实现快速扫描。

代码实现

package com.it1997;import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.concurrent.CountDownLatch;public class PortScaner {public static void main(String[] args) throws InterruptedException {String host = "it1997.com";int startPort =1;int endPort = 10000;int step =  Math.round(endPort/500)+1;for(int i=1;i<step;i++){int start = startPort+(i-1)*500;int end = startPort+i*500;System.out.println("正在扫描"+start+"-"+end);SP(host,start,end);}}public static void SP(String host,int startPort,int endPort) throws InterruptedException {List<Integer> portList = new ArrayList<>();final CountDownLatch latch = new CountDownLatch(endPort-startPort+1);for (int port = startPort; port <= endPort; port++) {int finalPort = port;//System.out.println(port);Thread thread = new Thread(new Runnable() {@Overridepublic void run() {Socket socket = new Socket();try {socket.connect(new InetSocketAddress(host, finalPort));System.out.println("端口" + finalPort + "开放");portList.add(finalPort);} catch (Exception e) {//e.printStackTrace();// System.out.println("端口" + finalPort + "未开放");}latch.countDown();}});thread.start();}latch.await();portList.sort(new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o1.compareTo(o2);}});}
}

java实现端口扫描相关推荐

  1. java局域网 端口扫描_java 如何端口扫描出ssh端口?

    在centos 7上测试了一下,比较简单粗暴.代码如下 import java.io.IOException; import java.io.InputStreamReader; import jav ...

  2. java 扫描tcp端口号_多线程TCP端口扫描 java实现

    界面部分: import java.awt.Color; import java.awt.Container; import java.awt.FlowLayout; import java.awt. ...

  3. [Java]ping或扫描端口的工具类

    2019独角兽企业重金招聘Python工程师标准>>> import java.io.BufferedReader; import java.io.IOException; impo ...

  4. java 监听本地端口_JAVA本地监听与远程端口扫描

    摘 要 随着Internet的不断发展,信息技术已成为社会进步的巨大推动力.不管是存储于服务器里还是流通于Internet上的信息都已成为一个关系事业成败的关键,这就使保证信息的安全变得格外重要.本地 ...

  5. java udp ip端口 设置_UDP端口扫描Java只找到1个开放的UDP端口

    我对端口扫描有一个分歧.我在 Java中扫描一些IP地址的UDP端口.在我的程序中(假设一切正常)我只能找到一个开放的UDP端口.在另一方面端口扫描"nmap"我得到4个开放的UD ...

  6. Java笔记-Java端口扫描功能(含TCP包分析以及原理)

    端口扫描主要是扫描其TCP端口.因为他有三次握手,握上了,如果有加密才进行传输层的加密. 写个程序,去连接那个端口,能握手,就说明端口是开着的. 关于UDP的端口扫描,有但意义不是很大,因为udp不会 ...

  7. 黑客渗透入门教程 第一课:粗暴的端口扫描

    很多人想学黑客知识,却不知如何入门,网上的教程也太繁琐,小白看了也头疼,那还是我来写黑客系列入门教程吧,跟着我做,你能黑客入门的. 端口扫描是指发送一组扫描消息,了解其提供的计算机网络服务类型(这些网 ...

  8. jni 调用sock_raw -- 端口扫描

    Android NDK学习之第一个实例---端口扫描 为什么要写一个端口扫描的程序,Java来写不是很方便吗?因为我也没有想到什么例子能够方便的来练习.于是想到以前找到的端口扫描的C代码,于是想用他们 ...

  9. 使用Nmap进行端口扫描和服务识别

    使用Nmap进行端口扫描和服务识别 第1章            Nmap的简介[1] Nmap ("Network Mapper(网络映射器)") 是一款开放源代码的 网络探测和 ...

  10. UDP 端口扫描 - Nmap

    0x00:简介 nmap 在二层做主机发现时使用的参数是 sn(ping 扫描,不做端口扫描).在三层做主机发现时也是使用的 sn 参数,这里二三层都用的 sn 参数,而具体使用的是二层协议 arp ...

最新文章

  1. jvm性能调优 - 15JVM的老年代垃圾回收器CMS的缺点
  2. 6 不更新无法使用_win10更新后无线网络无法使用
  3. 学习型php空间,补装修日记:学习型业主三大要素
  4. oracle离线文档查dbms_Oracle的健康检查–dbms_hm的使用 | 学步园
  5. html实现页面弹球,使用html+css+js实现弹球游戏
  6. JPA 单元测试配置
  7. ROBOGUIDE软件:FANUC机器人弧焊焊接起始点接触寻位虚拟仿真
  8. Python批量处理图片转换为灰色图片
  9. 在计算机硬件系统中 cache是,CPU中Cache是什么
  10. 香港拼音-汉字对照表
  11. reactjs遍历数据的方式
  12. 在线教育学习平台网校系统v2020 html5响应式在线教育培训类企业使用+安装说明
  13. 主存、辅存、内存、外存、存储器是什么?还傻傻分不清楚?看完这一篇就够了
  14. 从编译器源码中提取ARMv8的指令编码
  15. 原创|一个统计查询模块基于设计模式的抽象设计
  16. Chatper 16 Instrumental Variable Estimation
  17. 中国RoHS认证流程问题
  18. 陕西国防 c语言第三章实训三答案,C语言程序设计实验指导
  19. 培训人要转型?先回答这6个问题
  20. 【中美技术专家分享实录】微服务的挑战

热门文章

  1. Qt5.14.2安装、配置及测试(Win10)
  2. iOS 实时录音和播放
  3. linux怎么打包整个目录,tar打包整个目录(可排除子目录)几种方法
  4. 超火的ipad procreate必备神仙笔刷资源打包下载
  5. uni-app开发环境配置
  6. mysql源码解读——MVCC
  7. PMP考试备考指南基础知识
  8. php pdf转为word,免费pdf转word软件汇总
  9. java累积度分布,累积分布函数
  10. Html实现QQ音乐首页(响应式)