有没有办法找到进程使用的端口,给定其进程ID,使用java?

时间:2011-09-02 21:29:26

标签: java port

有没有办法找到java进程打开的端口,给定java中进程的进程ID? 需要使用java找到它,因为它必须是独立于平台的

给定进程id:输出该进程正在使用的任何端口/套接字连接。

给出的东西很少: 进程在同一个jvm中运行。 该进程只使用了一个端口/套接字, 给予Pid的。

无法执行ps -au | grep pid | ...

等平台特定命令

3 个答案:

答案 0 :(得分:2)

答案是否定的。哪些进程具有哪些端口根本不是Java应用程序可用的信息。你需要JNI,这取决于操作系统。

答案 1 :(得分:1)

答案 2 :(得分:1)

答案是肯定的,具体取决于您的操作系统。

您需要找到适当的命令,例如在mac osx上,它是lsof -i,然后使用Runtime执行它并解析输出。

以下是一些可以执行此操作的基本代码:

 Process p = Runtime.getRuntime().exec(new String[] { "lsof", "-i" });
 InputStream commandOutput = p.getInputStream();