۰۴-آبان-۱۳۹۰, ۱۹:۰۱:۵۱
اول اینکه سلام فکر کنم بعد 6 ماه تو همین حدود ها. دستم به این مندس هادی برسه یه هندونه می کوبم تو کلش. چون تا الان 3 بار حداقل تو این چند ماه پسوردم رو ریست کردم ولی میل آخری که پسورد جدید توش میاد برام ارسال نمی شد.
اما دوم و مشگل من . داشتم یه برنامه می نوشتم تو c++ biulder 2010 که یه لیست از سایت هارو بدم بهش بد ip های او نا رو برام بر گردونه.یه کلاس thread ساختم به این شکل.
بعد تو زدن یه دکمه از رو کلاس بالا یه شی ساختم. به این شکل .
این lstlink یه tlistbox هست که لینک ها توشه. lstIp هم یه tlistbox هست که ip های پیدا شده توش ذخیره میشه.که یکی یه دونه شی ازشون فرستادم تو کلاس thread .
مسئله اینجاست که آقا ! .وقتی میام و اون شی رو میسازمبرنامه شروع می کنه به پیدا کردن ip ها و ازافه کردن اونها به لیست باکس مقصد. اما تو یه حالت نیمه هنگ میمونه تا کارش تموم بشه. یعنی هر چند ثانیه به پیغام های سیستم توجه می کنه. پیش خودم گفتم خوب بیام یه خط کد زیر رو بهش تو while ازافه کنم.
اما اینم که ازافه می کنم هم عقلانی نیست چون خوب کار داره تو thread انجام میشه هم اینکه بازم با ازافه شدن این هم باز فرقی نمیکنه.مشگل تو صدا زدن تابع gethostbyname هست فکر کنم .
خلاصه که کار رو تموم می کنه و ip هارو میده بعد از هنگ در میاد.
حالا من به قول شاعر شیرین سخن توش گیر کردم.
کمک کنید مرسی.
اما دوم و مشگل من . داشتم یه برنامه می نوشتم تو c++ biulder 2010 که یه لیست از سایت هارو بدم بهش بد ip های او نا رو برام بر گردونه.یه کلاس thread ساختم به این شکل.
کد:
__fastcall GetIpOfLink::GetIpOfLink(bool CreateSuspended,TListBox &thLst,TListBox &thLstout)
: TThread(CreateSuspended)
{
Lst=&thLst;
Lstout=&thLstout;
Index=0;
}
//---------------------------------------------------------------------------
void __fastcall GetIpOfLink::Execute()
{
while (Lst->Count>Index){
Synchronize(GreateSubThRead) ;
}
}
//---------------------------------------------------------------------------
void __fastcall GetIpOfLink::GreateSubThRead()
{
struct hostent *h;
char bufIp[40];
String link=Lst->Items->Strings[Index];
if ((h=gethostbyname(link.t_str())) == NULL)
{ // get the host info
//Lstout->AddItem("Not Find",0);
Index++;
return;
}
sprintf(bufIp,"%s", inet_ntoa(*((struct in_addr *)h->h_addr)));
//Lstout->Perform(
Lstout->AddItem(bufIp,0);
Index++;
}
بعد تو زدن یه دکمه از رو کلاس بالا یه شی ساختم. به این شکل .
کد:
GetIpOfLink *mthread;
mthread=new GetIpOfLink(false,*lstlink,*lstIp);
مسئله اینجاست که آقا ! .وقتی میام و اون شی رو میسازمبرنامه شروع می کنه به پیدا کردن ip ها و ازافه کردن اونها به لیست باکس مقصد. اما تو یه حالت نیمه هنگ میمونه تا کارش تموم بشه. یعنی هر چند ثانیه به پیغام های سیستم توجه می کنه. پیش خودم گفتم خوب بیام یه خط کد زیر رو بهش تو while ازافه کنم.
کد:
Application->ProcessMessages();
خلاصه که کار رو تموم می کنه و ip هارو میده بعد از هنگ در میاد.
حالا من به قول شاعر شیرین سخن توش گیر کردم.
کمک کنید مرسی.