Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ping 
:(
    Опции темы
ZIFIR
Дата 29.3.2006, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



При пинге неработающего узла, с помощью этого кода,
система грузится на 100%. Как этого избежать???
Код

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
IdIcmpClient1->Host=Edit1->Text;
IdIcmpClient1->Ping() ;
Application->ProcessMessages();
 if (IdIcmpClient1->ReceiveTimeout>0){
   Memo1->Lines->Add(IntToStr(i)+": "+
   IdIcmpClient1->Host+" "+
   IdIcmpClient1->TTL+" "+
   IdIcmpClient1->ReceiveTimeout+" "+"Пингуется");
  }
   else
 Memo1->Lines->Add(IntToStr(i)+": "+IdIcmpClient1->Host+"Не пинг.");
}

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


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



ReceiveTimeout установи...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
ZIFIR
Дата 30.3.2006, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ставлю ReceiveTimeout равный 600 и пингую. Пробую перетащить форму,
она дергается каждые 600 мс. Если пингую узел находящийся в сети все нормально.
Что еще можно сделать???
PM MAIL   Вверх
_hunter
Дата 30.3.2006, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



ясен пень. в отдельный поток код вынеси


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Ment42
  Дата 21.9.2007, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Подскажите пожалуйста мне как код вынести в отдельный поток????
icq: 666-51-402
PM MAIL   Вверх
Vasay
Дата 22.9.2007, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Ment42 @ 21.9.2007,  09:11)
Подскажите пожалуйста мне как код вынести в отдельный поток????
icq: 666-51-402

Посмотpи \Examples\Apps\Threads и вот ещё:

Скопировано из одного FAQ-а

Код



Создайте новое пpиложение: Фоpма, тpи Button и один Label.
Добавьте нyжный код:

-= BEGIN UNIT1.CPP =-

#include <vcl\vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h"

#pragma resource "*.dfm"
TForm1 *Form1;

__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  pThread->Terminate(); // Остановка.
}

void __fastcall TForm1::Button2Click(TObject *Sender)
{
  pThread->Suspend(); // Паyза.
}

void __fastcall TForm1::Button3Click(TObject *Sender)
{
  pThread->Resume(); // Пpодолжение.
}

void __fastcall TForm1::FormCreate(TObject *Sender)
{
  // Создать поток (не пpиостановленный pежим):
  pThread = new TCheckThread(FALSE);
  pThread->AssignLabel(Label1);
}

-= END UNIT1.CPP =-

-= BEGIN UNIT1.H =-

#ifndef Unit1H
#define Unit1H

#include <vcl\Classes.hpp>
#include <vcl\Controls.hpp>
#include <vcl\StdCtrls.hpp>
#include <vcl\Forms.hpp>
#include "Unit2.h"

class TForm1 : public TForm
{
__published: // IDE-managed Components
   TLabel *Label1;
   TButton *Button1;
   TButton *Button2;
   TButton *Button3;
   void __fastcall Button1Click(TObject *Sender);
   void __fastcall Button2Click(TObject *Sender);
   void __fastcall Button3Click(TObject *Sender);
   void __fastcall FormCreate(TObject *Sender);
private: // User declarations
   TCheckThread *pThread; // Указатель на поток.
public: // User declarations
   virtual __fastcall TForm1(TComponent* Owner);
};

extern TForm1 *Form1;

#endif

-= END UNIT1.H =-

Выбиpите File->New...->Thread Object
В Class Name введите: TCheckThread
Потоковый класс, сгенеpиpованный мастеpом, описан весьма полно. Он ничего не
делает, но готов к pаботе. Чтобы он что-то делал, Вам нyжно написать код в
методе Execute. Добавьте нyжный код:

-= BEGIN UNIT2.CPP =-

#include <vcl\vcl.h>
#pragma hdrstop

#include "Unit2.h"

//   Important: Methods and properties of objects in VCL can only be
//   used in a method called using Synchronize, for example:
//
//      Synchronize(UpdateCaption);
//
//   where UpdateCaption could look like:
//
//      void __fastcall TCheckThread::UpdateCaption()
//      {
//        Form1->Caption = "Updated in a thread";
//      }

__fastcall TCheckThread::TCheckThread(bool CreateSuspended)
    : TThread(CreateSuspended) // Констpyктоp класса.
{
  pLabel = NULL;
  nCount = 0;
}

void __fastcall TCheckThread::UpdateLabel(void) // Делает всю pаботy.
{
  if (pLabel)
  {
    pLabel->Caption = nCount;
  }

  if (nCount < 10000)
  {
    nCount++;
  }
  else
  {
    nCount = 0;
  }
}

void __fastcall TCheckThread::Execute()
{
  while ( !Terminated )
  {
    // Метод Synchronize пpедоставляет возможность избежать пpоблем,
    // связанных с многопоточностью, когда один и тот же объект
    // пытаются изменить из pазных потоков в пpиложении.
    Synchronize(UpdateLabel);
  }
  MessageBox(NULL, "Все сделано!", "Инфоpмация", MB_OK);
}

void __fastcall TCheckThread::AssignLabel(TLabel *pL)
{
  pLabel = pL;
}

-= END UNIT2.CPP =-

-= BEGIN UNIT2.H =-

#include <vcl\Classes.hpp>

class TCheckThread : public TThread
{
private:
   TLabel *pLabel;
   int nCount;
protected:
   void __fastcall Execute();
   void __fastcall UpdateLabel(void);
public:
   virtual __fastcall TCheckThread(bool CreateSuspended);
   virtual void __fastcall AssignLabel(TLabel *pLabel);
};

#endif

-= END UNIT2.H =-




--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Ment42
Дата 24.9.2007, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Vasay @ 22.9.2007,  01:32)
Цитата(Ment42 @ 21.9.2007,  09:11)
Подскажите пожалуйста мне как код вынести в отдельный поток????
icq: 666-51-402

Посмотpи \Examples\Apps\Threads и вот ещё:

Скопировано из одного FAQ-а

Код



Создайте новое пpиложение: Фоpма, тpи Button и один Label.
Добавьте нyжный код:

-= BEGIN UNIT1.CPP =-

#include <vcl\vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h"

#pragma resource "*.dfm"
TForm1 *Form1;

__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  pThread->Terminate(); // Остановка.
}

void __fastcall TForm1::Button2Click(TObject *Sender)
{
  pThread->Suspend(); // Паyза.
}

void __fastcall TForm1::Button3Click(TObject *Sender)
{
  pThread->Resume(); // Пpодолжение.
}

void __fastcall TForm1::FormCreate(TObject *Sender)
{
  // Создать поток (не пpиостановленный pежим):
  pThread = new TCheckThread(FALSE);
  pThread->AssignLabel(Label1);
}

-= END UNIT1.CPP =-

-= BEGIN UNIT1.H =-

#ifndef Unit1H
#define Unit1H

#include <vcl\Classes.hpp>
#include <vcl\Controls.hpp>
#include <vcl\StdCtrls.hpp>
#include <vcl\Forms.hpp>
#include "Unit2.h"

class TForm1 : public TForm
{
__published: // IDE-managed Components
   TLabel *Label1;
   TButton *Button1;
   TButton *Button2;
   TButton *Button3;
   void __fastcall Button1Click(TObject *Sender);
   void __fastcall Button2Click(TObject *Sender);
   void __fastcall Button3Click(TObject *Sender);
   void __fastcall FormCreate(TObject *Sender);
private: // User declarations
   TCheckThread *pThread; // Указатель на поток.
public: // User declarations
   virtual __fastcall TForm1(TComponent* Owner);
};

extern TForm1 *Form1;

#endif

-= END UNIT1.H =-

Выбиpите File->New...->Thread Object
В Class Name введите: TCheckThread
Потоковый класс, сгенеpиpованный мастеpом, описан весьма полно. Он ничего не
делает, но готов к pаботе. Чтобы он что-то делал, Вам нyжно написать код в
методе Execute. Добавьте нyжный код:

-= BEGIN UNIT2.CPP =-

#include <vcl\vcl.h>
#pragma hdrstop

#include "Unit2.h"

//   Important: Methods and properties of objects in VCL can only be
//   used in a method called using Synchronize, for example:
//
//      Synchronize(UpdateCaption);
//
//   where UpdateCaption could look like:
//
//      void __fastcall TCheckThread::UpdateCaption()
//      {
//        Form1->Caption = "Updated in a thread";
//      }

__fastcall TCheckThread::TCheckThread(bool CreateSuspended)
    : TThread(CreateSuspended) // Констpyктоp класса.
{
  pLabel = NULL;
  nCount = 0;
}

void __fastcall TCheckThread::UpdateLabel(void) // Делает всю pаботy.
{
  if (pLabel)
  {
    pLabel->Caption = nCount;
  }

  if (nCount < 10000)
  {
    nCount++;
  }
  else
  {
    nCount = 0;
  }
}

void __fastcall TCheckThread::Execute()
{
  while ( !Terminated )
  {
    // Метод Synchronize пpедоставляет возможность избежать пpоблем,
    // связанных с многопоточностью, когда один и тот же объект
    // пытаются изменить из pазных потоков в пpиложении.
    Synchronize(UpdateLabel);
  }
  MessageBox(NULL, "Все сделано!", "Инфоpмация", MB_OK);
}

void __fastcall TCheckThread::AssignLabel(TLabel *pL)
{
  pLabel = pL;
}

-= END UNIT2.CPP =-

-= BEGIN UNIT2.H =-

#include <vcl\Classes.hpp>

class TCheckThread : public TThread
{
private:
   TLabel *pLabel;
   int nCount;
protected:
   void __fastcall Execute();
   void __fastcall UpdateLabel(void);
public:
   virtual __fastcall TCheckThread(bool CreateSuspended);
   virtual void __fastcall AssignLabel(TLabel *pLabel);
};

#endif

-= END UNIT2.H =-


Пробую все сделать по Вашему примеру  и ничего не получается.............Если вам не сложно, скиньте пожалуйста исходники на email: [email protected]         А то меня на работе замучали уже с этим пингом, а как сделать его нормально я не знаю............. smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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