比如要检测主机上的8282端口被哪个程序使用了,如何实现,java或C,有没有这方面的api?
解决方案 »
- 求解~为什么界面repaint后之前画的东西都不见了
- 关于ArrayList和数组的疑惑,求解答。
- jdbc mysql year 类型
- 有关:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
- java里如何自动结束多个并发线程
- 请教一下,怎样执行一段存放在字符串变量里面的java代码??
- synchronized放在哪里?
- QUEUE是指队列,那么请问TOPIC指的是什么意思?急!!!在线等待!!
- 如何配置使tomcat5新建的虚拟目录运行时可以支持bean和servlet等完整的WEB程序?
- null和""的区别??
- java Session和Channel的关系
- outer:和inner:的作用?程序流程?
比如要查看8080端口被哪个程序占用了,windows命令行窗口下执行:运行--cmd
C:\>netstat -aon|findstr "8080" ,输出
TCP 127.0.0.1:80 0.0.0.0:0 LISTENING 2448
端口被进程号为2448的进程占用,继续执行下面命令:
C:\>tasklist|findstr "2448"
thread.exe 2016 Console 0 16,064 K表示thread.exe程序占用了端口8080
try
{
ServerSocket testPort = new ServerSocket(8282);
}
catch(Exception ex)
{
ex.printStackTrace();
}
{
ServerSocket testPort = new ServerSocket(8282);
}
catch(Exception ex)
{
ex.printStackTrace();
}
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();
}
}
}这是简单版的,详细的楼主自己细化一下