Java 端口扫描器 TCP的实现方法
想必很多朋友都实现过一个简易的聊天室这个功能,其中涉及到Socket套接字这个类,我们通过一个特定的IP以及特定的端口创建一个服务端的套接字(ServerSocket),以此我们聊天个体的套接字(Socket)再与其连接,从而实现连通并通过流来传递信息的聊天室功能。
而端口扫描器所用的知识体系也是基于Socket,相当于我们已经有一个 服务器端的套接字,我们去查看其是否能够连通,即可。
按照上面的思路,我们可能已经有了一个大体的思路:
我们通过建立一个Socket来连接一个要扫描的IP以及PORT,只建立连接不传递数据。
再通过捕捉IOException来检测是否连接成功。
所以大家很快就会有一串如下的实现代码:
static public String ScannerPortisAlive(int port,String HostIP){
String result="OPEN";
try{
Socket testPortSocket = new Socket(HostIP, port);
testPortSocket.close();
}catch (IOException e) {
result = "CLOSE";
}
return result;
}
但是在我实际测试情况来看,这段代码的执行效率非常低下,问题出在哪里呢?
原来,当端口不通时,Socket会默认等待,所以我们要重新设置连接等待时长。
static public String ScannerPortisAlive(int port){
String result="OPEN";
Socket socket=null;
try{
socket=new Socket();
InetAddress ip=InetAddress.getLocalHost();
SocketAddress address=new InetSocketAddress(ip, port);
socket.connect(address,100);
socket.close();
// Socket testPortSocket = new Socket(HostIP, port);
// testPortSocket.close();
}catch (IOException e) {
result = "CLOSE";
}
return result;
}
除此之外,我们只需要再开一个线程池来处理要处理的端口就可以啦。
笔者实现了一个简单的可用的桌面端口扫瞄器,大家可以用作参考:
Jar可执行程序:https://files.cnblogs.com/files/rekent/Port_Scanner_jar.zip
Source Code:https://files.cnblogs.com/files/rekent/Port_Scanner.zip
Java 端口扫描器 TCP的实现方法的更多相关文章
- Python3实现TCP端口扫描器
本文来自 高海峰对 玄魂工作室 的投稿 作者:高海峰 QQ:543589796 在渗透测试的初步阶段通常我们都需要对攻击目标进行信息搜集,而端口扫描就是信息搜集中至关重要的一个步骤.通过端口扫描我们可 ...
- java编写一个端口扫描器
好久没写java了,学的时候,也没学习网络编程这一块,无意中看到了一本书,于是小小复习一下java,写个端口扫描器,玩玩吧,网上这种小公具有的是,就是自己无聊写着玩玩. 源代码如下: 共两个类,比较简 ...
- 简单的端口扫描器(TCP connect)
端口扫描器原理相对简单,采用的是TCP connect状态判断.具体来说:TCP connect方式使用系统网络API connect向目标主机的端口发起连接,如果无法连接,说明该端口关闭.该方式扫描 ...
- perl多线程tcp端口扫描器(原创)
perl多线程tcp端口扫描器(原创) http://bbs.chinaunix.net/thread-1457744-1-1.html perl socket 客户端发送消息 http://blog ...
- Python写安全小工具-TCP全连接端口扫描器
通过端口扫描我们可以知道目标主机都开放了哪些服务,下面通过TCP connect来实现一个TCP全连接端口扫描器. 一个简单的端口扫描器 #!/usr/bin/python3 # -*- coding ...
- 3. Port scanners (端口扫描器 4个)
3. Port scanners (端口扫描器 4个) 愤怒的IP扫描器是一个小的开源Java应用程序,它执行主机发现(“ping扫描”)和端口扫描. 旧的2.x版本只有Windows,但是,新的3. ...
- Java中的TCP/UDP网络通信编程
127.0.0.1是回路地址,用于测试,相当于localhost本机地址,没有网卡,不设DNS都可以访问. 端口地址在0~65535之间,其中0~1023之间的端口是用于一些知名的网络服务和应用,用户 ...
- 【技术分享】手把手教你使用PowerShell内置的端口扫描器
[技术分享]手把手教你使用PowerShell内置的端口扫描器 引言 想做端口扫描,NMAP是理想的选择,但是有时候NMAP并不可用.有的时候仅仅是想看一下某个端口是否开放.在这些情况下,PowerS ...
- 使用python-nmap 搭建基本端口扫描器
代码地址如下:http://www.demodashi.com/demo/13255.html 一.前言 注意: 本文相关教程仅供个人学习使用,切勿用于非法用途,否则造成的相关损失及影响,作者不承担任 ...
随机推荐
- rm -f + 文件名+* 与 rm -f + 文件名* 的不同效果,大坑呀。
rm -f catalina.2018-10-22.* 与*号间无空格 rm -f catalina.2018-10-22. * :多了空格:
- iOS之某公司iOS开发笔试题
参考答案不唯一,大家可以根据自己的理解回答,没有必要跟笔者的一样.参考笔者的答案,也许给你带来灵感! 1.对数组中的元素去重复 例如: NSArray *array = @[@"12-11& ...
- C++定义一个简单的Computer类
/*定义一个简单的Computer类 有数据成员芯片(cpu).内存(ram).光驱(cdrom)等等, 有两个公有成员函数run.stop.cpu为CPU类的一个对象, ram为RAM类的一个对象, ...
- ATX 浅谈自动化测试工具 python-uiautomator2
1.简介 python-uiautomator2是一个自动化测试开源工具,仅支持Android平台的原生应用测试. 2.支持平台及语言 python-uiautomator2封装了谷歌自带的uiaut ...
- Linux环境下tomcat如何热部署
1.修改tomcat配置文件 1.1第一步修改tomcat-users.xml <role rolename="manager-gui" /> <role rol ...
- JS如何给ul下的所有li绑定点击事件,点击使其弹出下标和内容
这是一个非常常见的面试题,出题方式多样,但考察点相同,下面我们来看看这几种方法:方法一: var itemli = document.getElementsByTagName("li&quo ...
- ThinkPHP创建应用
新建一个文件 引入ThinkPHP文件
- Bad escape character ‘ygen’ 错误原因!
ssh-keygen -t rsa -C “邮箱” ssh-keygen 命令中间没有空格,如果在ssh后面加上空格,会得到Bad escape character ‘ygen’.的错误.
- Hive初识(三)
根据用户的需求创建视图.可以将任何结果集数据保存为一个视图.视图在Hive的用法和SQL视图用法相同.它是一个标准的RDBMS概念.我们可以在视图上执行所有DML操作. 创建一个试图 可以创建一个试图 ...
- Leecode刷题之旅-C语言/python-70爬楼梯
/* * @lc app=leetcode.cn id=70 lang=c * * [70] 爬楼梯 * * https://leetcode-cn.com/problems/climbing-sta ...