有什么方法可以使用 java 找到本地网络中存在的服务器吗?
Is there any way to find servers present in a local network using java?
我想使用 java 查找本地网络中存在的服务器列表。那可能吗?或者在进行网络扫描时有什么方法可以区分服务器和主机?
最简单的解决方案是从 Java 调用 nmap
。这将进行端口扫描并尝试对计算机正在侦听的端口进行分类。当然,您可以从 Java 做同样的事情,但这不太值得付出努力。 https://nmap.org/
注意:这是网络黑客常用的工具,因此在执行此操作之前,请确保您已在您的网络上获得 运行 的批准。
我不知道 "normal host" 和 "server" 之间有明显的区别。我使用的所有系统都以 "normal hosts" 和 "servers" 的方式运行……取决于您的观点。 (而且您当然无法根据 OS 和 运行 来区分典型系统。例如,我的笔记本电脑 运行 和 Linux。)
如果(假设地)您可以提出一些 objective 区分这两种系统的标准(基于它们的行为/响应网络请求的方式),那么就可以将它们区分开来使用像 nmap 这样的工具。另一种选择是使用像 OpenVAS
这样的工具,它可以根据各种线索在系统的 OS 处生成 "educated guess"。
但这真的取决于您提供一些 objective/可衡量的标准来决定系统是否是服务器。
But nmap just tries to guess the host machines OS and most of the time it failed to guess.
嗯,是的。您是否希望典型的 OS 将此类信息泄露给网络上提出要求的任何人/任何事物?
现在回到 1980 年代......在 Morris Worm 被释放到野外之前......人们更加信任。但不是在 2018 年!
我想使用 java 查找本地网络中存在的服务器列表。那可能吗?或者在进行网络扫描时有什么方法可以区分服务器和主机?
最简单的解决方案是从 Java 调用 nmap
。这将进行端口扫描并尝试对计算机正在侦听的端口进行分类。当然,您可以从 Java 做同样的事情,但这不太值得付出努力。 https://nmap.org/
注意:这是网络黑客常用的工具,因此在执行此操作之前,请确保您已在您的网络上获得 运行 的批准。
我不知道 "normal host" 和 "server" 之间有明显的区别。我使用的所有系统都以 "normal hosts" 和 "servers" 的方式运行……取决于您的观点。 (而且您当然无法根据 OS 和 运行 来区分典型系统。例如,我的笔记本电脑 运行 和 Linux。)
如果(假设地)您可以提出一些 objective 区分这两种系统的标准(基于它们的行为/响应网络请求的方式),那么就可以将它们区分开来使用像 nmap 这样的工具。另一种选择是使用像 OpenVAS
这样的工具,它可以根据各种线索在系统的 OS 处生成 "educated guess"。
但这真的取决于您提供一些 objective/可衡量的标准来决定系统是否是服务器。
But nmap just tries to guess the host machines OS and most of the time it failed to guess.
嗯,是的。您是否希望典型的 OS 将此类信息泄露给网络上提出要求的任何人/任何事物?
现在回到 1980 年代......在 Morris Worm 被释放到野外之前......人们更加信任。但不是在 2018 年!