Сканер портов Java - PullRequest
       1

Сканер портов Java

1 голос
/ 01 марта 2010
import java.net.Socket;
import java.io.IOException;

public class Main {


    public static void main(String[] args) {
       String remote = "69.163.44.171";
       int i = 0;
       do {
       try {
       Socket s = new Socket(remote,i);
       System.out.println("Server is listening on port " + i+ " of " + remote);
       s.close();

       } catch (IOException ex) {
       System.out.println("Server is not listening on port " + i+ " of " + remote);
    }
       i++;
       } while(i == 55000);
}

Выход:

Server is not listening on port 0 of 69.163.44.171
BUILD SUCCESSFUL (total time: 0 seconds)

Я использую цикл while, потому что он быстрее, теперь вопрос, почему он сканирует только один порт?

Ответы [ 5 ]

3 голосов
/ 01 марта 2010

Ну ... как часто сделал вы думаете, что условие while(i == 55000) будет true?

2 голосов
/ 01 марта 2010

Эта часть:

} while(i == 55000)

будет повторять цикл , пока i равно точно 55000.

Поскольку i начинается с 0 и после этого увеличивается до 1, оно никогда не достигнет этого места со значением ровно 55000 и, следовательно, никогда не перезапустит цикл.

2 голосов
/ 01 марта 2010

Вы должны изменить это на время:

while(i <= 55000)

В настоящее время вы достигаете i (который равен 1)! = 55000, поэтому вы выпадаете из цикла.

1 голос
/ 01 марта 2010

Вы говорите while(i == 55000) вместо while(i <= 55000)

0 голосов
/ 02 марта 2010

Ошибка условия while отмечена в нескольких ответах, поэтому я не буду ее повторять. Я мог бы сделать одно предложение: вы можете сделать это быстрее, если используете Selector и некоторые SocketChannels вместо того, чтобы пытаться по одному. Вот некоторые материалы для чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...