Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

В чем ошибка при сканировании портов ClientSoket-om?? [D6, Win95/98, WinME]


KyRo ©   (2004-02-28 12:51:00) 

Я сканирую порты таким кодом ;
  Main.TestSocket.Host:='localhost';
  Main.TestSocket.Port:=i;
  Main.TestSocket.Active:=True;
  if  Main.TestSocket.Active then      Мain.TestSocket.Active:=False;
и второй способ :
тоже самое но место актив -  опен
и когда соединение установлено в событии отключаю
,а после в событии отключения перехожу на следующий порт.
И тот и другой метод выдает ошибку
Asynchronus soket eror 10061  при том на первом же порте.
Подскажите из за чего это может быть ??


Reindeer Moss Eater   (2004-03-02 08:40:00) [1]

Похоже правильно.
Но те порты на которых стоят службы и по идее должны работать
тоже выдаетса таже ошибка. В этот то и вся проблема


Ну кто тебе такое сказал?
Допустим я - какая-то служба и ты открыл соединение с моим открытым портом.
Но я жду некое приветсвие от входящих клиентов.
А если его нет - на мороз.


DelphiN!   (2004-02-29 13:10:00) [2]

procedure TForm1.ClientSocket1Error(Sender: TObject;
 Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
 var ErrorCode: Integer);
begin
memo3.Lines.Add('Client status: Error: '+inttostr(errorcode));
errorcode := 0;
end;


Verg   (2004-02-29 10:38:00) [3]


> KyRo ©   (28.02.04 21:38) [14]
> Похоже правильно.
> Но те порты на которых стоят службы и по идее должны работать
>
> тоже выдаетса таже ошибка. В этот то и вся проблема


Это у тебя ошибка в программе. Где-то в районе 17-18 строки.
Проблема только в этом. OnError не обрабатываешь скорее всего.


KyRo   (2004-02-28 21:38:00) [4]

Похоже правильно.
Но те порты на которых стоят службы и по идее должны работать
тоже выдаетса таже ошибка. В этот то и вся проблема


Reindeer Moss Eater   (2004-02-28 17:10:00) [5]

Соединяемся с портом который не открыт.
Получаем исключение с указанием конкретного кода, говорящее, что порт не открыт и соединение не может быть установлено.

Это по твоему ошибочное поведение? Это ошибка в реализации класса?
А на самом деле не должно быть никакого исключения и код возврата должен быть NO_ERROR в подобной ситуации?

Я тебя правильно понял?


KyRo   (2004-02-28 17:02:00) [6]

Asynchronus soket eror 10061


Reindeer Moss Eater   (2004-02-28 16:27:00) [7]

С какой ошибкой?


KyRo   (2004-02-28 16:09:00) [8]

А что с ошибкой как перейти в синхронный режим ?


Reindeer Moss Eater   (2004-02-28 15:38:00) [9]

Нити помогут.
Но пока полоса пропускания интерфейса не исчерпается.
И пока переключение между нитями не будет тормозить сильнее, чем другие компонеты


KyRo   (2004-02-28 15:34:00) [10]

Ну а есле сделать много нитей и сканировать ими , а то я проверил на сканирования 65 тис портов уйдет не меньше часа.
И еще при сканировании 200 портов у меня ClientSoket все время выдавал ошибку - это нормально или нет ???


Reindeer Moss Eater   (2004-02-28 14:36:00) [11]

Ровно настолько быстрее,
насколько быстрее будет твоя реализация инкапсуляции WinSock API чем реализация программистов из Borland.


KyRo   (2004-02-28 14:27:00) [12]

Счас попробую.
Еще вопрос для сканирования правильно ли использовать
ClientSoket насколько быстро это будет
или лучше использовать
WinSock.


Reindeer Moss Eater   (2004-02-28 14:18:00) [13]

Посмотри на var параметр передаваемый в обработчик OnError.
Нажми F1.
Подумай, что будет, если тому параметру присвоить значение 0.


KyRo   (2004-02-28 13:58:00) [14]

Начались загадки ?? :) Скоро в хокку ответы будут.
Есле ошибка возникает то обработчик на нее писать в onError ??
как я понял и писать что порт закрыт.
А программа в таком случае не будет выкидыватся ??
Или что то еще нужно сделать что бы прога при возникновении этой ошибки не прикрощала работу ??


Reindeer Moss Eater   (2004-02-28 13:36:00) [15]

А по твоему это странно?
А по твоему это не нужно?


KyRo   (2004-02-28 13:27:00) [16]

Оно то может и не ждет но мне нужно проверить все порты на открытость.
Что для этого сделать обработчик этой ситуации и записывать что этот порт закрыт ??


Verg   (2004-02-28 13:06:00) [17]

Это из-за того, что
WSAECONNREFUSED

Т.е. на этом порту никто не ждет входящего соединеия.


Наверх

Титульная страница Поиск, карта сайта Написать письмо