栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java启动Python脚本,设置随机端口号,并验证端口是否被占用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java启动Python脚本,设置随机端口号,并验证端口是否被占用

java启动Python脚本,设置随机端口号,并验证端口是否被占用

所用依赖

代码-验证端口号是否被占用代码-启动python脚本需要注意的点:验证:

所用依赖
//主要使用起来方便
 		
            cn.hutool
            hutool-all
            5.7.22
        
代码-验证端口号是否被占用
import java.net.Socket;
import java.net.UnknownHostException;
import java.net.InetAddress;

	
	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;
	}
代码-启动python脚本
import cn.hutool.core.util.RandomUtil;


public static Process runPythonscript (String pythonscriptPath) throws IOException {
		//从10000-20000随机生成端口
		int port = RandomUtil.randomInt(10000,20000);
		//判断端口是否被占用 如果占用测重新省端口号
		while (isPortUsing("127.0.0.1",port)){
			port = RandomUtil.randomInt(10000, 20000);
		}
		//生成端口后 启动Python脚本
		System.out.println("生成python算法端口 " + pythonscriptPath + " 127.0.0.1 " + port);
		return Runtime.getRuntime().exec("python " + pythonscriptPath + " 0.0.0.0 " + port);
	}


//如何关闭脚本?
       process.destroyForcibly();
	
需要注意的点:
		方法 isPortUsing() 执行起来很慢!本地运行大概需要2-3秒才会返回结果。对速度有要求就需要考虑其他的写法了。
验证:
public static boolean isPortUsing(String host, int port) throws UnknownHostException {
		// 开始时间
		long stime = System.currentTimeMillis();

		boolean flag = false;
		InetAddress theAddress = InetAddress.getByName(host);
		try{
			Socket socket = new Socket(theAddress, port);
			flag = true;
		} catch (IOException e) {
			//如果所测试端口号没有被占用,那么会抛出异常,这里利用这个机制来判断
			//所以,这里在捕获异常后,什么也不用做
		}
		// 结束时间
		long etime = System.currentTimeMillis();
		// 计算执行时间
		System.out.printf("执行时长:%d 毫秒.", (etime - stime));
		return flag;

	}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/778452.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号