被占用的端口如何通过Java代码查出是那个ip占用的

2025-04-06 00:19:09
推荐回答(2个)
回答1:

public class TestPort
{
    public 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地址,好久没有写,不知道了

回答2:

java能执行cmd命令啊,具体怎么写我记不起来了,你查查