Java 如何在给定的远程计算机上查找特定进程使用的TCP/UDP端口

Java 如何在给定的远程计算机上查找特定进程使用的TCP/UDP端口,java,ip,port,remote-access,Java,Ip,Port,Remote Access,我有一个无法解决的问题 据我所知: 关于我正在寻找的进程的一些信息:这是一个java进程,但如果我可以访问类似于ps-ef | grep java中的信息,那么我可以找到它的PID 运行Linux版本3.16.7-35-desktop(SUSE Linux)的远程计算机的IP地址 我想在该机器上找到该进程所使用的端口,但有一些限制: 必须以编程方式在java中完成 必须在Windows和Linux上工作(如果需要,java代码可以分别处理这两种情况) 不需要安装任何其他应用程序(无论是在调

我有一个无法解决的问题

据我所知:

  • 关于我正在寻找的进程的一些信息:这是一个java进程,但如果我可以访问类似于
    ps-ef | grep java
    中的信息,那么我可以找到它的PID
  • 运行Linux版本3.16.7-35-desktop(SUSE Linux)的远程计算机的IP地址
我想在该机器上找到该进程所使用的端口,但有一些限制:

  • 必须以编程方式在java中完成
  • 必须在Windows和Linux上工作(如果需要,java代码可以分别处理这两种情况)
  • 不需要安装任何其他应用程序(无论是在调用方计算机上还是远程计算机上)
我也知道港口应该在10000到20000之间。我可以通过网络访问远程计算机(两台计算机位于同一子网上)

你会怎么做


注意:我找到了,但它是旧的,不是远程的。

这是标准的黑客攻击要求。您可以做
nmap
所做的事情

依次连接到范围内的每个端口,并根据连接时从服务获取的数据,尝试确定该端口侦听或响应哪个服务。这是非常缓慢的,如果你有任何工具来检测这一点,它看起来会像一个黑客,但这是一种已经使用了很长时间的技术,因为这是唯一一种在没有服务告诉你机器上运行什么的情况下做到这一点的方法

一个更好的方法是在某个地方有一个服务发现过程,其中包含您可以联系的所有服务,最好是它们的状态,这样您就可以轻松地找到一个可供您的客户使用的服务