java端口扫描(原创)
- 作者: 五速梦信息网
- 时间: 2026年04月04日 13:36
项目需要扫描占用的端口来判断服务是否启动,通过查资料发现大多数方法都是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对base64的图片进行压缩
java对base64的图片进行压缩
- 互联网
- 2026年04月04日
-
Java多线程 2 线程的生命周期和状态控制
Java多线程 2 线程的生命周期和状态控制
- 互联网
- 2026年04月04日
-
Java多线程和线程池
Java多线程和线程池
- 互联网
- 2026年04月04日
-
java读取文件夹下所有文件并替换文件每一行中指定的字符串
java读取文件夹下所有文件并替换文件每一行中指定的字符串
- 互联网
- 2026年04月04日
-
Java读取文件后文件被占用
Java读取文件后文件被占用
- 互联网
- 2026年04月04日
-
java读取文件方法总结
java读取文件方法总结
- 互联网
- 2026年04月04日






