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"));
}
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();
}
}
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());//绑定不成功重试
}
}
}
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());//绑定不成功重试
}
}
}