java端口扫描(原创)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java端口扫描(原创)相关的知识,希望对你有一定的参考价值。

  项目需要扫描占用的端口来判断服务是否启动,通过查资料发现大多数方法都是ServerSocket socket = new ServerSocket(port);代码如下:

package com.frank.util;  
  
import java.io.IOException;  
import java.net.InetAddress;  
import java.net.Socket;  
import java.net.UnknownHostException;  
  
public class NetUtil {  
      
    /*** 
     *  true:already in using  false:not using  
     * @param port 
     */  
    public static boolean isLoclePortUsing(int port){  
        boolean flag = true;  
        try {  
            flag = isPortUsing("127.0.0.1", port);  
        } catch (Exception e) {  
        }  
        return flag;  
    }  
    /*** 
     *  true:already in using  false:not using  
     * @param host 
     * @param port 
     * @throws UnknownHostException  
     */  
    public static boolean isPortUsing(String host,int port) throws UnknownHostException{  
        boolean flag = false;  
        InetAddress theAddress = InetAddress.getByName(host);  
        try {  
            Socket socket = new Socket(theAddress,port);  
            flag = true;  
        } catch (IOException e) {  
              
        }  
        return flag;  
    }  
} 

  经过测试发现如果端口没有占用,此方法的时间消耗比较大,大概在1s左右,如果是循环扫描端口,无疑是无法接受的。

可以用java.net.ServerSocket包的ServerSocket代替Socket去检测端口,方法如下:

  public static boolean isPortUsing(String host,int port) throws UnknownHostException{  
      boolean flag = true;
//      InetAddress theAddress = InetAddress.getByName(host);  
      try {  
//          Socket socket = new Socket(theAddress,port);  
    	  ServerSocket socket = new ServerSocket(port);  
          flag = false;
          socket.close();
      } catch (IOException e) {
            
      }  
      return flag;  
  }  

  对Socket等知识研究较少,如有问题,请大家及时提出,尽快改正,谢谢!

以上是关于java端口扫描(原创)的主要内容,如果未能解决你的问题,请参考以下文章

[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段

扫描算法(SCAN)——磁盘调度管理

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

Java开发技术:Socket编程端口扫描小程序(完整源码)

Java开发技术:Socket编程端口扫描小程序(完整源码)

端口扫描器的几种代码实现方案