被占用的端口如何通过Java代码查出是那个ip占用的
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了被占用的端口如何通过Java代码查出是那个ip占用的相关的知识,希望对你有一定的参考价值。
当确定一个端口被占用的时候,怎么通过Java分析出是那个ip在使用这个端口,不能在Java中使用操作系统自带的查询方法,只能使用Java的方法。
public class TestPortpublic static void main(String[] args)
System.out.println(getPID("3306"));//得到进程ID,3306是端口名称
System.out.println(getProgramName(getPID("3306")));//根据进程ID得到映像名称
killTask(getProgramName(getPID("3306")));//根据映像名称关闭进程
// 得到进程ID
public static String getPID(String port)
InputStream is = null;
BufferedReader br = null;
String pid = null;
try
String[] args = new String[]"cmd.exe","/c","netstat -aon|findstr",port;
is = Runtime.getRuntime().exec(args).getInputStream();
br = new BufferedReader(new InputStreamReader(is));
String temp = br.readLine();
if(temp != null)
String[] strs = temp.split("\\\\s");
pid=strs[strs.length-1];
catch (IOException e)
e.printStackTrace();
finally
try
br.close();
catch (IOException e)
e.printStackTrace();
return pid;
//根据进程ID得到映像名称
public static String getProgramName(String pid)
InputStream is = null;
BufferedReader br = null;
String programName = null;
try
String[] args = new String[]"cmd.exe","/c","tasklist|findstr",pid;
is = Runtime.getRuntime().exec(args).getInputStream();
br = new BufferedReader(new InputStreamReader(is));
String temp = br.readLine();
if(temp != null)
String[] strs = temp.split("\\\\s");
programName=strs[0];
catch (IOException e)
e.printStackTrace();
finally
try
br.close();
catch (IOException e)
e.printStackTrace();
return programName;
//根据映像名称关闭进程
public static void killTask(String programName)
String[] args = new String[]"Taskkill","/f","/IM",programName;
try
Runtime.getRuntime().exec(args);
catch (IOException e)
e.printStackTrace();
//题主自己看看具体怎么get它的ip地址,好久没有写,不知道了 参考技术A java能执行cmd命令啊,具体怎么写我记不起来了,你查查追问
已经说过了,不能使用系统自带的命令,不使用netstat,用纯Java方法获取。
追答貌似不行,就算你找网上的jar包,实际里面也是封装的cmd这种,就像楼上的
常见命令:端口被占用如何做
一、端口被占用如何做
1、首先查出占用端口的进程ID
netstat -ano | findstr 8080
2、杀死该进程
taskkill /f /PID
// 上一步查到的进程ID
taskkill /pid 20892 /f
// 成功: 已终止 PID 为 20892 的进程。
以上是关于被占用的端口如何通过Java代码查出是那个ip占用的的主要内容,如果未能解决你的问题,请参考以下文章