Java調win控制檯獲取佔用端口的程序名java
常常在調用bind方法的時候程序被佔用了。如何查找是哪一個程序佔用的呢?代碼以下:code
private void bindCheck(int port){ Runtime run = Runtime.getRuntime(); try { Process process = run.exec("netstat -ano"); InputStream input = process.getInputStream(); InputStream inputE = process.getErrorStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(input,"GB2312")); String szline; String pid = null; while ((szline = reader.readLine()) != null) { if(szline.indexOf(":"+port)>0){ pid = szline.split("\\s+")[szline.split("\\s+").length - 1]; } } reader.close(); reader = new BufferedReader(new InputStreamReader(inputE,"GB2312")); while ((szline = reader.readLine()) != null) { System.out.println(szline); } reader.close(); process.waitFor(); process.destroy(); if(pid != null){ process = run.exec("tasklist"); input = process.getInputStream(); inputE = process.getErrorStream(); reader = new BufferedReader(new InputStreamReader(input,"GB2312")); while ((szline = reader.readLine()) != null) { if(szline.indexOf(pid)>0){ System.out.println("[ERROR] Bind error!\nThis pid occupies the port "+port+"\n"+Arrays.toString(szline.split("\\s+"))); } } reader.close(); reader = new BufferedReader(new InputStreamReader(inputE,"GB2312")); while ((szline = reader.readLine()) != null) { System.out.println(szline); } reader.close(); process.waitFor(); process.destroy(); }else{ System.out.println("No process occupies port "+ port); } } catch (Exception e) { e.printStackTrace(); } }