Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сканер, использование сокетов 
V
    Опции темы
knox
Дата 4.12.2007, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 1.12.2007

Репутация: нет
Всего: нет



как определить открытые и закрытые порты,
Код

for (int i=1; i<=3000; i++){
    try{
      ServerSocket s = new ServerSocket(i);
      System.out.println(i+" port open");
    }
    catch(IOException e){
      System.out.println(i+" port close");        
    }     
}

если делать таким образом сканирует быстро все норм, но вот номера портов не совпадают с номерами если сканировать другими сканерами

если вместо ServerSocket, использовать класс Socket номера портов совпадают вот только сканирование идет очень долго, помогите разобраться кто знает

Код

for (int i=1; i<=3000; i++){
    try{
      Socket s = new Socket(i);
      System.out.println(i+" port open");
    }
    catch(IOException e){
      System.out.println(i+" port close");        
    }     
}


Это сообщение отредактировал(а) knox - 4.12.2007, 19:24
PM MAIL   Вверх
kkorsakoff
Дата 5.12.2007, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 14



Второй вариант сканирования правильный. Долго идет скорее всего из-за таймаута на коннект, если порт свободен - сначала выжидается таймаут перед тем, как выбрасывается SocketException...или что там, забыл уже.
Попробуй выставлять в качестве таймаута какое-нибудь маленькое значение (ты же локалхост сканируешь).
Делается это до открытия сокета:
1. сначала создаешь сокет конструктором без параметров
2. делаешь connect() с указанием таймаута (почитай javadoc на класс Socket)
PM MAIL WWW ICQ   Вверх
Kangaroo
Дата 5.12.2007, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 2
Всего: 104



Цитата(kkorsakoff @  4.12.2007,  23:28 Найти цитируемый пост)
Делается это до открытия сокета:
1. сначала создаешь сокет конструктором без параметров
2. делаешь connect() с указанием таймаута (почитай javadoc на класс Socket) 

Вот так получилось:
Код

for (int i=1; i<=3000; i++){
            try{
              Socket s = new Socket();
              s.connect(new InetSocketAddress(i), 20);
              System.out.println(i+" port open");
            }
            catch(IOException e){
              System.out.println(i+" port close");        
            }     
        }

Вроде работает. smile


--------------------
Lost....
PM MAIL MSN   Вверх
knox
Дата 5.12.2007, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 1.12.2007

Репутация: нет
Всего: нет



спасибо за помощь только я в конструктроре добавил еще хост
PM MAIL   Вверх
kkorsakoff
Дата 7.12.2007, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 14



В конструкторе никакой хост не добавлен. Очевидно, вы перепутали.
И кстати не забываем закрывать открытые сокеты  smile 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0761 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.