实现原理

通过能否正常建立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. 在Ubuntu 14.04 64bit中永久添加DNS的方法
  2. window下使用虚拟机安装Linux操作系统CentOS
  3. html dom 高级,DOM 高级工程师不完全指南
  4. 北卡教堂山计算机科学专业,UNC的CS「北卡罗来纳大学教堂山分校计算机科学系」...
  5. python 3解释器_Python3解释器
  6. Fiddler + 夜神模拟器 APP接口调试
  7. Elasticsearch 深入3
  8. 插画素材 | 圣诞节设计离不了!
  9. (已解决)报错:collect2 error ld returned 1 exit status
  10. 在AndroidMenifest动态引用ApplicationId,解决INSTALL_FAILURE_CONFLICTION_PROVIDER
  11. OneZero第四周第一次站立会议(2016.4.11)
  12. 谷歌经典bert模型从下载源码到运行成功
  13. [linux虚拟机] 使用yum命令时,解析不了yum源,Cannot find a valid baseurl for repo: base/7/x86_6
  14. P6-Vue3后台管理系统-构建业务组件连通公共组件
  15. 国外LEAD网站采集你会了吗
  16. 系统服务(daemons)
  17. css3 只给左上,右上,左下,右下设置圆角属性
  18. OCR项目实战(一):手写汉语拼音识别(Pytorch版)
  19. [samba]Samba服务器架设
  20. Mouse without Borders 两台win11电脑共享鼠标键盘

热门文章

  1. Python编写九九乘法表代码以及解决方案
  2. 解决Flutter运行IOS报错:Podfile is out of date
  3. 虚幻学习4---制作实时逼真的毛发【笔记】
  4. 如何阅读MySQL源码
  5. Windows Server 2008 R2远程桌面服务配置和授权激活
  6. python3解密栅栏密码的正确方法
  7. latex生成pdf中文标签乱码pdf复制乱码
  8. Logistic回归公式推导和代码实现和Python中的sklearn.linear_model.LogisticRegression 的参数
  9. linux怎样使用小米线刷工具,小米线刷工具推荐及使用教程
  10. 手机怎么解决同ip多账号_原神手游如何多开刷初始号赚钱技巧攻略 | 兔子IP