Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> простой сканер сети 
:(
    Опции темы
progmax
Дата 3.3.2007, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Постала задача написания простого сканера сети.
Для этой цели использую компонент ClientSocket:

Код

ClientSocket1.Port:=21;
for i:=0 to 255 do 
begin
 ClientSocket1.Host:='1.1.2.'+i;
 ClientSocket1.Active:=true;
end;

 В событии OnConnect формирую список IP-адресов с открытым 21 портом:

Код

ListBox1.Items.Add('1.1.2.'+i);
ClientSocket1.Active:=false;


Во время запуска программа выдает ошибку. Наверное все из-за цикла. Подскажите, пожалуйста, в чем может быть ошибка.
PM MAIL   Вверх
MetalFan
Дата 3.3.2007, 19:57 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



Цитата(progmax @  3.3.2007,  17:07 Найти цитируемый пост)
Во время запуска программа выдает ошибку

круто! а теперь все угадываем, что за ошибка)
з.ы. перед изменением Host Active := false


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Matematik
Дата 3.3.2007, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

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



progmax
Режим работы сокета?

PM MAIL WWW ICQ   Вверх
progmax
Дата 4.3.2007, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(MetalFan @ 3.3.2007,  19:57)
круто! а теперь все угадываем, что за ошибка)
з.ы. перед изменением Host Active := false

Ошибка:
Project scan.exe raised exception class ESocketError with message 'Asynchronous socket error 10049'

Насколько я понимаю алгоритм следующий:
1. попытка активировать сокет
2. если не удается, то событие OnError
3. если удается - OnConnect

Добавлено @ 10:46 
Цитата(Matematik @ 3.3.2007,  21:33)
progmax
Режим работы сокета?

Не совсем понятен вопрос!
PM MAIL   Вверх
Matematik
Дата 4.3.2007, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

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



По умолчанию этот компонент работает в асинхронном режиме (параметр ClientType) т.ч. при попытке активировать сокет, программа не ждет установки соединения(или ошибки), а продолжает работать дальше. При таком подходе в цикле проверять возможность соединения нельзя!

Цитата(progmax @  4.3.2007,  10:40 Найти цитируемый пост)
Насколько я понимаю алгоритм следующий:
1. попытка активировать сокет
2. если не удается, то событие OnError
3. если удается - OnConnect


В этом ты прав.
Как подавить ошибку http://forum.vingrad.ru/topic-139066.html
PM MAIL WWW ICQ   Вверх
progmax
Дата 4.3.2007, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Исходя из выше сказанного изменил в программе следующее:
 - добавил в событие OnError компонента  ClientSocket:
Код

ErrorCode:=0;
 
- в свойстве компонента ClientType установил ctBlocking.

Теперь если заданный порт открыт на удаленном хосте то программа отрабатывает без ошибки. А вот если порт закрыт - программа выдает ошибку: "Подключение не установлено, т.к. конечный компьютер отверг запрос на соединение".
Наверное прийдеться использовать исключение (try).
А если удаленный ПК отключен или в сети нету такого IP-адреса компонент доволи долгое время пытается открыть сокет. Подскажите, пожалуйста, где можно установить таймаут?

Это сообщение отредактировал(а) progmax - 4.3.2007, 14:14
PM MAIL   Вверх
Dr_midon
Дата 2.4.2007, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



При соединении включай таймер(склько хочеш подождать), а при наступлении времени обрывай соединение

Единственная фигня - метод варварский и не дождавшись ответа мона пропустить адресок...
PM MAIL   Вверх
Volkss85
  Дата 22.10.2007, 16:59 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Приветик пацики КАК создать болкиратор сетки типа ширмы чтоб одни пользовались легко входили в нужную сеть а отдельная группа работала отдельно не видя основную сетку но есть проблема по сетке раскидуется Интернет smile 
PM MAIL   Вверх
MetalFan
Дата 22.10.2007, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



Volkss85, "пацик" =>  smile 
hint: пиши на русском.

Это сообщение отредактировал(а) MetalFan - 23.10.2007, 17:36


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Volkss85
  Дата 23.10.2007, 13:29 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



раздупли smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

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

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


 




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


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

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