admin管理员组文章数量:1441528
java:判断某个端口是否被占用,以及递归找到可使用端口
构思
- 配置文件处有默认端口,一般来说用户使用时会参考默认端口依次递增,所以我这里找可用端口的思路也是会根据默认端口依次递增去递归找到未被占用端口
代码实现
代码语言:javascript代码运行次数:0运行复制package test;
import java.io.IOException;
import java.*;
import java.util.Enumeration;
public class GetLocalHost {
public static void main(String[] args) throws Exception {
int inputPort = 8400;
System.out.println("输入端口:" + inputPort + ", 递增递归找到可用端口为:" + getUsablePort(inputPort));
}
/**
* 根据输入端口号,递增递归查询可使用端口
* @param port 端口号
* @return 如果被占用,递归;否则返回可使用port
*/
public static int getUsablePort(int port) throws IOException {
boolean flag = false;
Socket socket = null;
InetAddress theAddress = InetAddress.getByName("127.0.0.1");
try{
socket = new Socket(theAddress, port);
flag = true;
} catch (IOException e) {
//如果测试端口号没有被占用,那么会抛出异常,通过下文flag来返回可用端口
} finally {
if(socket!=null) {
//new了socket最好释放
socket.close();
}
}
if (flag) {
//端口被占用,port + 1递归
port = port + 1;
return getUsablePort(port);
} else {
//可用端口
return port;
}
}
}
运行结果
与实际相符,则正确
命令行判断某个端口是否被占用
- 命令行查询端口
lsof -i:[端口号]
- kill掉该端口
kill 3187244
- 再次查看端口就会发现已经被kill掉了
本文标签: java判断某个端口是否被占用,以及递归找到可使用端口
版权声明:本文标题:java:判断某个端口是否被占用,以及递归找到可使用端口 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1747854184a2764772.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论