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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ping из библиотеки ics, Проблема с интервалом ожидания 
:(
    Опции темы
Drizhenko
Дата 2.11.2005, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Когда я использую компонент Ping из библиотеки ics, то при при при пинговании хоста ответ приходит быстро, однако если возникает ошибка "превышен интервал ожидания", то программа ждет ответа от хоста и начинает тормозить. Как сделать, чтобы при ошибке она просто посылала следующие запрос, а не ждала три секунды ответа на потеряный пакет?
PM MAIL   Вверх
RA
Дата 13.11.2005, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


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

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



покажи код программы, желательно весь.
PM   Вверх
Drizhenko
Дата 14.11.2005, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, XPMan, Ping, ComCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Button1: TButton;
    Button3: TButton;
    Edit2: TEdit;
    Edit1: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    XPManifest1: TXPManifest;
    Timer1: TTimer;
    RichEdit1: TRichEdit;
    Ping1: TPing;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    RichEdit: TRichEdit;
    Button5: TButton;
    ProgressBar1: TProgressBar;
    Button2: TButton;
    procedure Button4Click(Sender: TObject);
    procedure Ping1DnsLookupDone(Sender: TObject; Error: Word);
    procedure Ping1EchoReply(Sender, Icmp: TObject; Error: Integer);
    procedure Ping1EchoRequest(Sender, Icmp: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
 

  private
    { Private declarations }
  public
    procedure MyProc(c:Tcolor);
    { Public declarations }
  end;

var
  Form1: TForm1;
  i,j,start,kp,pp,k,h:integer; //kp-êîë. îòðïð. ïàêåòîâ, pp-ïîòåðÿííûõ ïàêåòîâ
  p: TPoint;


implementation

{$R *.dfm}

procedure TForm1.Button4Click(Sender: TObject);
begin
pp:=0;
kp:=0;
start:=1;
j:=0;                 
RichEdit1.Clear ;
label6.Caption :='0,0% ïîòåðü';
richEdit1.SetFocus;
RichEdit1.Lines.Add('Ïîèñê'''+ Edit1.Text +'''');
MyProc(clblack);
ping1.Size:=strToInt(edit2.Text );
ping1.DnsLookup(edit1.Text);
//ping1.Timeout:=StrToInt(edit3.Text);
timer1.Interval:= StrToInt(edit3.Text);

end;

procedure TForm1.Ping1DnsLookupDone(Sender: TObject; Error: Word);
begin
//åñëè ïðîèçîøëà îøèáêà, òî...
if error <>0 then
begin
//âûâåñòè ñîîáùåíèå îá îøèáêå
RichEdit1.Lines.Add('Õîñò íå íàéäåí'''+ Edit1.Text + '''');
MyProc(clblack);
//âûõîä
exit;
end;
//åñëè îøèáîê íå áûëî, òî âûâîäèì â Richedit1 ðåçóëüòàòû ïîèñêà
RichEdit1.Lines.Add('Õîñò '''+ Edit1.text + ''' - '+ping1.DnsResult );
MyProc(clblack);
//óñòîíàâëèâàåì ñâîéñòâî Address êîìïîíåíòà Ping ðàâíûì
//àäðåñó, íàéäåííîìó â áàçå DNS
Ping1.address:= ping1.dnsresult;
//çàïóñêàåì Ping
Timer1.Enabled := true;

end;

procedure TForm1.Ping1EchoReply(Sender, Icmp: TObject; Error: Integer);
  begin
    if error = 0 then
      begin
      RichEdit1.Lines.Add('Íå ìîãó âûïîëíèòü îïåðàöèþ Ping: '+Ping1.ErrorString );
        MyProc(clred);
        pp:=pp+1;
        label5.Caption:='Ïîòåðÿíî: '+inttostr(pp);
      end;
  if error <> 0 then
  begin
     RichEdit1.Lines.Add('Ïîëó÷åíî '+ IntTostr(Ping1.Reply.DataSize)+
    ' áàéò îò '+ping1.HostIP + ' çà ' + intToStr(Ping1.Reply.RTT) + ' ìèëëèñåêóíä');
//     MyProc(StrToInt('$'+'ff0000'));
       MyProc(clblack);
end;
  end;

procedure TForm1.Ping1EchoRequest(Sender, Icmp: TObject);
  begin
    if start= 1 then
    begin
      RichEdit1.Lines.Add('Îòïðàâëåíî' + intTostr(Ping1.Size) + ' áàéòîâ íà ' + Ping1.HostName );
      MyProc(clblack);
      start:=0;
    end;
  end;

procedure TForm1.FormCreate(Sender: TObject);
begin
start:=0;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
    ping1.ping;
    kp:=kp+1;
    label4.Caption:='Îòïðàâëåíî ïàêåòîâ: '+inttostr(kp);
if (pp*100)/kp<1 then
  begin
    label6.Caption :=Format('%.1f',[(pp*100)/kp])+'%'+' ïîòåðü';
  end
else
    label6.Caption :=IntToStr(round((pp*100)/kp))+'%'+' ïîòåðü';
  end;

procedure TForm1.Button3Click(Sender: TObject);
begin
    Timer1.Enabled := false;
    edit1.SetFocus;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  ip:PAnsiChar;
begin
  ip:=PAnsiChar('ping '+edit1.Text+' -t'+' -l '+edit2.Text+' -w '+edit3.Text);
  WinExec(ip,SW_SHOW);
end;

end.


Это сообщение отредактировал(а) Drizhenko - 14.11.2005, 10:03

Присоединённый файл ( Кол-во скачиваний: 25 )
Присоединённый файл  __________.TIF 77,90 Kb
PM MAIL   Вверх
RA
Дата 14.11.2005, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


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

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



Посмотри этот многопоточный пример использования ICS-совского пинга. (Быстро и без тормозов):

Присоединённый файл ( Кол-во скачиваний: 135 )
Присоединённый файл  ThreadedPingDemo.rar 6,08 Kb
PM   Вверх
Drizhenko
Дата 15.11.2005, 05:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Почему то при запуске программы возникает ошибка
[Fatal Error] PingThrd.pas(20): File not found: 'Icmp.dcu'
Видимо файла не хватает. Отправь, пожалуйста.

PM MAIL   Вверх
RA
Дата 15.11.2005, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


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

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



Drizhenko Вобще-то если ты установил ICS то модуль icmp.pas у тебя должен быть, ибо это не какой-то сторонний модуль а ics-совский.

Находится в папке по адресу "ics\Delphi\Vc32\icmp.pas".

Если что обнови компоненты www.overbyte.be


PM   Вверх
alexj
Дата 2.3.2006, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



smile работает!

Это сообщение отредактировал(а) alexj - 2.3.2006, 22:45
PM MAIL   Вверх
Zugenoid
Дата 7.4.2009, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(RA @  14.11.2005,  14:33 Найти цитируемый пост)
Присоединённый файл ( Кол-во скачиваний: 70 )
 ThreadedPingDemo.rar 6,08 Kb

Ребята, я жутко извиняюсь, но я хоть и не гость, но скачатб сие файло у мя не получается. У кого завалялось в запасниках, скиньте мне плз на [email protected], буду должен 100-граммовку коньяку типа "Ночи Херсонеса".
PM MAIL   Вверх
MetalFan
Дата 8.4.2009, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Zugenoid, пример качается. только код там спорный)


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


Брутальный буратина
****


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

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



Цитата(MetalFan @  8.4.2009,  08:47 Найти цитируемый пост)
ример качается. только код там спорный) 


Он устаревший, те. для ICS V5 кажется.

Это сообщение отредактировал(а) RA - 8.4.2009, 16:09
PM   Вверх
MetalFan
Дата 8.4.2009, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



RA, не только устаревший, но и местами бессмысленный.

Это сообщение отредактировал(а) MetalFan - 8.4.2009, 13:09


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


Новичок



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

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



ребята, вы не поняли-я пытаюсь скачать rar, а скачивается htm-страница, в которой написано, что данная возможность типа не доступна для гостей. вот я о чем. и мне код уже почти этот и не нужен, разобрался и так smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

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

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

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

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

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


 




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


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

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