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