リモートマシンのポートへの接続を単純にテストし、接続が確立されたか拒否されたかをチェックするプログラム、ほとんどポートスキャナーを書いています。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 後にハングします。助けてくれてありがとう。