Java 在运行时检查端口使用情况?
在我的应用程序中,在运行时,我希望能够识别是否正在使用某个特定的端口(这非常容易做到)Java 在运行时检查端口使用情况?,java,sockets,port,Java,Sockets,Port,在我的应用程序中,在运行时,我希望能够识别是否正在使用某个特定的端口(这非常容易做到) 但我也希望得到尽可能多的关于谁在使用这个端口的信息。进程id、名称等信息。我该怎么做?Java没有提供您需要的信息。您将不得不使用特定于操作系统的API 我不知道*nix系统,但在Windows上,您可以通过使用/或枚举TCP套接字来获取TCP套接字的进程ID,直到找到您感兴趣的IP/端口。对于UDP,有一个函数(还有GetUdpTable()和GetUdp6Table()函数,但它们不提供所有者进程ID)
但我也希望得到尽可能多的关于谁在使用这个端口的信息。进程id、名称等信息。我该怎么做?Java没有提供您需要的信息。您将不得不使用特定于操作系统的API 我不知道*nix系统,但在Windows上,您可以通过使用/或枚举TCP套接字来获取TCP套接字的进程ID,直到找到您感兴趣的IP/端口。对于UDP,有一个函数(还有
GetUdpTable()
和GetUdp6Table()
函数,但它们不提供所有者进程ID)
获得进程ID后,可以通过以下方式获取其文件名:
windows
或*nix
平台?理想情况下,我可以同时支持两者,但*nix是最低要求
public static boolean portAvailable(int port) {
try (Socket ignored = new Socket("localhost", port)) {
return false;
} catch (IOException ignored) {
return true;
}
}