0

私は教育用の演習として Java でポート スキャナを作成していますが、問題が発生しました。ローカル マシンでポートをスキャンするとプログラムは正常に動作しますが、外国のコンピュータでポートをスキャンしようとすると、プロセスがフリーズします。私のスキャン方法のコードは次のとおりです。

public void scan(InetAddress ad, int start, int end){
    for(int i=start; i<=end; i++){
        try{
            socket = new Socket(ad, i);
            System.out.println("Port "+i+"is open");
        }catch(Exception e){
            System.out.println("Port "+i+"is not open");
        }
    } 
}

これまでのところ、ホスト名がループバック アドレスまたは単に「localhost」の場合に機能しており、IP アドレスでも機能します。しかし、たとえば www.google.com の IP を解決したり、同じネットワーク上の他のコンピューターの IP アドレスを指定したりすると、最初のポートをスキャンした後にプログラムがフリーズします。

次のように IP アドレスを解決しています。

inetAddressObject = InetAddress.getByName(hostNameString);

ローカル マシンでのポートのスキャンと外部ホストでのポートのスキャンの大きな違いを見逃しているかどうか、誰か教えてもらえますか? それとも、私のコードに単純な問題がありますか?

4

1 に答える 1