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



我有一个无法解决的问题。

我所知道的:

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

我想在该机器上找到该进程使用的端口,但有一些限制:

  • 必须在 java 中以编程方式完成
  • 必须在Windows和Linux上工作(如果需要,java代码可以分别处理这两种情况)
  • 不需要安装任何其他应用程序(无论是在调用方计算机上还是在远程计算机上)

我也知道端口应该在 10000 到 20000 之间。我有权访问远程计算机(两台计算机位于同一子网中)。

你会怎么做?

注意:我找到了这个,但它很旧,并不遥远。

这是一个标准的黑客要求。你可以做nmap做的事情。

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

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