【问题标题】:Java Server Sockets: Find an open port NOT blocked by a firewallJava 服务器套接字:查找未被防火墙阻止的开放端口
【发布时间】:2012-03-18 10:33:40
【问题描述】:

我有一个与之前提出的这个问题类似的问题,但我的问题不同。我需要能够查看端口是否打开并且没有被防火墙自动阻止。我发现的所有示例都只是查找服务器可以绑定的端口,但不检查该端口是否未被防火墙阻止。如果它被防火墙阻止,则不在 LAN 上的客户端无法连接到服务器。有没有人有任何方法可以自动执行此操作?我知道您可以在 Windows 中使用 CMD 手动检查端口,但我需要自动检查。感谢您对任何混淆表示歉意。

【问题讨论】:

  • 我是如何得到 -1 的?我在过去的一个小时里对此进行了研究,但没有人找到我找到的任何解决方案。
  • 询问配置/管理防火墙的人。如果不深入细节,就没有简单的方法可以从机器本身做到这一点,无论你认为 Windows 中的 CMD 是什么......它都没有。您还可以使用在远程主机(或可以重新路由数据包的主机)上运行的端口扫描器......尽管有人可能会注意到这一点。
  • 这通常是不可能的,除非你可以让防火墙另一端的客户端配合你进行测试。询问防火墙管理员会更快。防火墙通常不会很配合地自动告诉您它们的设置。
  • 您可以使用端口扫描器来查找打开的端口。但确定端口是否会被防火墙阻止取决于平台和防火墙。
  • 如果这很容易做到,那不是一开始就让防火墙毫无意义吗?

标签: java sockets port firewall


【解决方案1】:

这不是手册,但有点超出 Java,但您可以运行 NMAP,然后将结果读入 java。这将帮助您了解哪些端口是开放的。

【讨论】:

  • 有用的提示,但我什至不知道如何做到这一点......我想我会让人们手动执行此操作。谢谢
  • 研究一下如何在 java 中运行系统命令,然后阅读 nmap 上的文档。实际上它很容易。试试看吧。
【解决方案2】:

如果你想使用 Java 和 Nmap,你可以使用 nmap4j.sourceforge.net,它是一个用于运行 Nmap 并将结果解析为 Java 对象的 Java API。

【讨论】:

    猜你喜欢
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多