想必很多朋友都实现过一个简易的聊天室这个功能,其中涉及到Socket套接字这个类,我们通过一个特定的IP以及特定的端口创建一个服务端的套接字(ServerSocket),以此我们聊天个体的套接字(Socket)再与其连接,从而实现连通并通过流来传递信息的聊天室功能。

而端口扫描器所用的知识体系也是基于Socket,相当于我们已经有一个 服务器端的套接字,我们去查看其是否能够连通,即可。

按照上面的思路,我们可能已经有了一个大体的思路:

我们通过建立一个Socket来连接一个要扫描的IP以及PORT,只建立连接不传递数据。

再通过捕捉IOException来检测是否连接成功。

所以大家很快就会有一串如下的实现代码:

static public String ScannerPortisAlive(intport,String HostIP){

String result="OPEN";try{

Socket testPortSocket= newSocket(HostIP, port);

testPortSocket.close();

}catch(IOException e) {

result= "CLOSE";

}returnresult;

}

但是在我实际测试情况来看,这段代码的执行效率非常低下,问题出在哪里呢?

原来,当端口不通时,Socket会默认等待,所以我们要重新设置连接等待时长。

static public String ScannerPortisAlive(intport){

String result="OPEN";

Socket socket=null;try{

socket=newSocket();

InetAddress ip=InetAddress.getLocalHost();

SocketAddress address=newInetSocketAddress(ip, port);

socket.connect(address,100);

socket.close();//Socket testPortSocket = new Socket(HostIP, port);//testPortSocket.close();

}catch(IOException e) {

result= "CLOSE";

}returnresult;

}

除此之外,我们只需要再开一个线程池来处理要处理的端口就可以啦。

笔者实现了一个简单的可用的桌面端口扫瞄器,大家可以用作参考:

java 扫描tcp端口号_Java 端口扫描器 TCP的实现方法相关推荐

  1. linux 端口没有进程号,「linux专栏」何为端口号?端口号和进程号如何互查?答案在这里...

    何为端口号?端口号和进程号如何互查?这里我们来说一说,列举几种常见的查看方法.#linux专栏# 何为端口号? 在互联网时代的今天,每台联网的计算机都有自己的IP,这个IP好比是在互联网上的地址编号, ...

  2. mysql有多少个端口号_查看mysql端口号(mysql端口号是多少)

    查看mysql端口号(mysql端口号是多少) 2020-05-07 22:11:45 共10个回答 如何查看mysql的端口号 1使用命令showglobalvariableslike'port'; ...

  3. java email怎么设置端口号_java mail 设置参数

    Session需要使用java.util.Properties来构造,常用的用来构造Session的属性: 属性名 含义 mail.smtp.user SMTP的缺省用户名. mail.smtp.ho ...

  4. java qq邮箱发送端口号_java实现qq邮箱的发送

    准备工作 开启PO3/SMTP服务 打开qq邮箱>账户 记住这串授权码 会用到 java发送qq邮箱实现步骤 创建一个javase的工程 3. 编写核心代码 我这里封装了 也可以不封装 /** ...

  5. java tcp 编程实例_Java实现基于TCP的通讯程序实例解析

    Java中的TCP通信程序 TCP可以实现两台计算机之间的数据交互通信的两端,要严格区分客户端与服务端 两端通信时的步骤: 1.服务端程序,需要事先启动,等待客户端连接 2.客户端主动连接服务器端,才 ...

  6. snmp同步端口号_SNMP端口号教程及其示例

    snmp同步端口号 Simple Network Management Protocol aka SNMP is used to monitor and manage devices over the ...

  7. java tcp聊天程序_java实现基于Tcp的socket聊天程序

    对于步入编程行业不深的初学者或是已经有所领会的人来说,当学习一项新的技术的时候,非常渴望有一个附上注释完整的Demo.本人深有体会,网上的例子多到是很多,但是很杂不完整,写代码这种东西来不得半点马虎, ...

  8. mysql怎么看端口号_mysql端口号(怎么查看mysql的端口号)

    mysql端口号(怎么查看mysql的端口号) 2020-05-07 21:54:58 共10个回答 如何查看mysql的端口号 1使用命令showglobalvariableslike'port'; ...

  9. tomcat中间件的默认端口号_tomcat端口号修改(tomcat默认端口号是多少)

    tomcat端口号修改(tomcat默认端口号是多少) 2020-05-07 22:25:25 共10个回答 怎么改tomcat的端口号? 修改tomcat端口号的方法:修改Server.xml文件, ...

  10. java中如何读写文件_JAVA: 读写文件的几种方法

    如果您使用java8,可以也参考这篇文章:JAVA: Java8流逐行读取文件 import java.io.BufferedReader; import java.io.BufferedWriter ...

最新文章

  1. [Bzoj1061][Noi2008]志愿者招募(费用流)
  2. 展开被 SpringBoot 玩的日子 《 二 》 WEB 开发
  3. A Complete List of .NET Open Source Developer Projects
  4. hushen 300
  5. SSAS(分析服务)优化手册
  6. java aio复制文件_java复制文件的4种方式及拷贝文件到另一个目录下的实例代码...
  7. 面试官:连Spring三级缓存都答不好,自己走还是我送你?
  8. DataTable新增列设置DefaultValue问题。
  9. @Controller @RestController
  10. (组合数学笔记)Pólya计数理论_Part.4_Burnside引理
  11. mysql操作json优点和缺点_详解Mysql中的JSON系列操作函数
  12. base——JavaSEJavaEEJavaME的区别【Java中常用的包结构】
  13. Android之多种Bitmap效果
  14. 张俊芳电机学14章计算题以及答案
  15. NotifyIcon用法
  16. SAP Hybris企业培训
  17. ccf 命令行选项 java,DiskPart 命令行选项
  18. c51单片机汇编语言1秒延时,51单片机汇编延时程序算法详解
  19. 嵌入式技术及应用基础实验
  20. PDF限制编辑怎么解决

热门文章

  1. 你真的了解“手机端的 C/S架构 向 B/S架构 迁移”吗
  2. 济南计算机技术学校,省技工院校计算机技术中心教研组会议在济南市技师学院召开...
  3. 软件保护技术 - 基础
  4. 笔记本安装win10+ubuntu双系统超详细教程
  5. MayaDay1:历史记录和删除历史记录
  6. Java加密套件强度限制引起的SSL handshake_failure
  7. cadence SPB17.4 - 更换已有原理图的标题栏
  8. iOS6.1/iOS6.0.1完美越狱迟迟不现身 pod2g发推文澄清
  9. 霏霏暮雨 eclipse+HBASE开发环境搭建(已实践
  10. “开心偷菜”一梦8年终成空,终究还是输给了时间和规则!