【问题标题】:How to scan remote host port that in used?如何扫描使用的远程主机端口?
【发布时间】:2009-12-01 15:12:41
【问题描述】:

这是我目前得到的代码......

import java.net.*;

public class PortScanner {

    public static void main(String args[]) {
        int startPortRange = 0;
        int stopPortRange = 0;

        startPortRange = Integer.parseInt(args[0]);
        stopPortRange = Integer.parseInt(args[1]);

        for (int i = startPortRange; i <= stopPortRange; i++) {
            try {
                Socket ServerSok = new Socket("127.0.0.1", i);

                System.out.println("Port in use: " + i);

                ServerSok.close();
            } catch (Exception e) {

            System.out.println("Port not in use: " + i);
        }
    }
}

} 例如在 smtp 服务器上,系统使用端口 25,我需要扫描连接到 smtp 服务器的远程客户端上的端口。我该怎么做?

请帮帮我。

【问题讨论】:

  • 你最后一句话是什么意思?您是否尝试从远程客户端检测 this 机器上正在使用哪些端口?您是在寻找有关如何检测远程端口的建议,还是想从“目标”机器发布端口可用性?恐怕我现在不明白你的问题。
  • 我认为他对客户端用于接受/打开此连接的端口感兴趣。
  • 让我看看,我在计算机 A 上,我运行这个程序,我输入了计算机 B 的 IP 地址。我怎么知道计算机 B 连接到我的计算机(计算机 A)的端口(端口信息来自这台计算机)。对不起,我的英语不是很好。

标签: java sockets ports


【解决方案1】:

您的代码应如下所示:

    for (int i = startPortRange; i <= stopPortRange; i++) {
            try {
                    Socket serverSok = new Socket("127.0.0.1", i);

                    System.out.println("Port in use: " + i);

                    serverSok.close();
            } catch (Exception e) {
                    System.out.println("Port not in use: " + i);
            }
    }

【讨论】:

  • 这是您的问题还是有其他问题?
  • 是的,还有别的东西。我需要知道连接到我的计算机上的其他计算机上的端口号。
【解决方案2】:

如果我理解您的问题:

  • 进程 S 在机器 A 上运行,并在端口 P 上侦听传入连接
  • 进程 C 在机器 B 上运行,并从端口 T 连接到 A 上的 P
  • 你的程序 F 在机器 A 上运行
  • F 不是 S

您想使用 Java 在 F 中发现 T 吗?你不能!

您必须阅读打开套接字的操作系统表。这是依赖于操作系统的操作,java 不支持。

否则如果F是S,你可以修改S的代码来发现T。如果S使用java.net.ServerSocket类,你可以搜索ServerSocket.accept(),在返回的Socket实例上使用getPort()发现T .

安德烈律师事务所

【讨论】:

    【解决方案3】:

    首先,这种方式存在一些方法问题,因为端口可以在使用中,但不能在监听。

    如果您实际上只是在寻找侦听端口,并且想要使用上述方法,那么至少生成一些线程,这样您就不必等待每个端口依次超时。

    最好的方法是模仿同步扫描之类的东西,而不是进行完整的 TCP 握手,但我不确定你是否可以在 Java 中做到这一点。

    虽然问题很巧妙。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-03
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多