0

我正在编写一个程序,它只是测试与远程机器上端口的连接并检查连接是建立还是拒绝,几乎是一个端口扫描器。虽然它似乎适用于 localhost 和某些站点,但由于某种原因,它不适用于大多数 IP 地址,但我的几个同学采用了类似的方法并能够探测这些相同的站点。一些站点,例如 wikipedia.org,只会访问 21 端口然后挂起。谁能看到我的代码有任何明显的问题。提前谢谢。

for(int i = 1; i <= maxPort; i++)
    {
            boolean found = true;
            try
            {
                    String[] hostNameArray = hostName.split(".");
                    socket = new Socket(hostName, i);
                    System.out.println("Test");


                    socket.close();
            }
            catch(java.net.ConnectException ex)
            {
                    System.out.println("Error" + ex + "\t<"+i+">");
                    found = false;
            }
            catch(java.net.UnknownHostException ex)
            {
                    System.out.println("Unknown host");
                    System.exit(-1);
            }
            catch(IOException ex)
            {
                    System.out.println("IO Exception");
                    System.exit(-2);
            }
            if(found)
            {
                    ports.add(i);
            }
    }

当我尝试创建套接字时,诸如 google.com 之类的地方将简单地停止(即永远不会打印测试语句),而 wikipedia.org 将在 21 后简单地挂起。再次感谢您的帮助。

4

0 回答 0