端口号、进程号之间关系

package com.brp.gjnb.main.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;


/**
 * 端口号操作工具类
 * @author dzp
 *
 */
public class PortUtil
{
    public static void main(String[] args)
    {
//        System.out.println(getPID("3306"));//得到进程ID,3306是端口名称
//        System.out.println(getProgramName(getPID("3306")));//根据进程ID得到映像名称
//        killTask(getProgramName(getPID("3306")));//根据映像名称关闭进程
        
        System.out.println(getPID("9998"));
    }

    

    //根据端口号关闭进程

    public static void closePort(String port){
    String pid = getPID(port);
    killTaskByPid(pid);
    }
    
    // 根据端口号得到进程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();
        }
    }
  //根据进程号关闭进程
    public static void killTaskByPid(String pid){
    //String[] args = new String[]{"tskill",pid};
    String args = "taskkill -PID "+pid+" -F";
        try
        {
            Runtime.getRuntime().exec(args);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }

    

   //系统绑定端口

    public static void bindServer(){
try{              
System.out.println("the server port is:"+System.getProperty("sys.port"));//输出绑定的端口号到当前的控制台上     
String pid = getPID(System.getProperty("sys.port"));
if(pid==null || "".equals(pid)){
ServerSocket serSocket = new ServerSocket(Integer.parseInt(System.getProperty("sys.port")));    //在自己的机器上开一个服务类套接字 并等待发送者的连接
}
}catch(Exception e){
e.printStackTrace();                        
System.out.println(e.toString());//绑定不成功重试                        
}
}
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值