View Full Version : چگونگی ping کردن IP
kamal_habibi
شنبه 30 تیر 1386, 02:30 صبح
من میخواستم یک برنامه بنویسم و بتونم یک IP درشبکه رو Ping کنم و نتیجه آن را در یک Memo ببینم اگه سورس کاملی در این رابطه دارید لطفا بذارید:ناراحت:
علی کشاورز
شنبه 30 تیر 1386, 03:59 صبح
با استفاده از Indy به راحتی می تونید این کار را انجام دهید. در Demoهای Indy مثالی به اسم PingGUI وجود داره گه دقیقا همین کاری که شما میخواید رو انجام میده (البته نتیجه را در یک ListBox میریزه بجای Memo).
Demo های Indy را می توانید از سایتش دانلود کنید، همراه دلفی نیستند.
Batman
شنبه 30 تیر 1386, 09:49 صبح
آقای کشاورز ممکنه آدرس رو هم بگید
علی کشاورز
شنبه 30 تیر 1386, 15:43 عصر
http://www.indyproject.org/
kamal_habibi
یک شنبه 31 تیر 1386, 00:31 صبح
سالم دوستان بالاخره با کمی کلنجار رفتن تونستم یه چیز جالب درست کنم
میخوام که شما هم استفاده کنید
جهت استفاده برای پینگ کردن در یک شبکه
iamehsan56
سه شنبه 07 مهر 1388, 14:51 عصر
من از دموی ایندی واسه پینگ کردن استفاده کرده ام .
اما وقتی یه سایتی رو پینگ می کنم جواب خوبی نمی ده . گاهی جواب می ده بعد از کلی
پینگ کردن و گاهی هم جواب نمی ده . ایندی من10.2.5 هست
و تو دلفی 2009 کامپایل کردم
حتی وقتی آدرس آی پی اون رو به جا ی اسمش وارد می کنم بازم همونطوره
اما وقتی با دستور پینگ خود ویندوز از پرامت پینگ می کنم مشکلی نداره
این اشکال از چیه
لطفا کمک کنید
procedure TfrmPing.btnPingClick(Sender: TObject);
var
i: integer;
begin
ICMP.OnReply := ICMPReply;
ICMP.ReceiveTimeout := 1000;
btnPing.Enabled := False; try
ICMP.Host := edtHost.Text;
for i := 1 to spnPing.Value do begin
ICMP.Ping;
Application.ProcessMessages;
end;
finally btnPing.Enabled := True; end;
end;
procedure TfrmPing.ICMPReply(ASender: TComponent; const ReplyStatus: TReplyStatus);
var
sTime: string;
begin
// TODO: check for error on ping reply (ReplyStatus.MsgType?)
if (ReplyStatus.MsRoundTripTime = 0) then
sTime := '<1'
else
sTime := '=';
lstReplies.Items.Add(Format('%d bytes from %s: icmp_seq=%d ttl=%d time%s%d ms',
[ReplyStatus.BytesReceived,
ReplyStatus.FromIpAddress,
ReplyStatus.SequenceId,
ReplyStatus.TimeToLive,
sTime,
ReplyStatus.MsRoundTripTime]));
end;
http://www.barnamenevis.org/forum/attachment.php?attachmentid=37640&stc=1&d=1254219376http://www.barnamenevis.org/forum/attachment.php?attachmentid=37641&stc=1&d=1254219376
babakmomeni
سه شنبه 07 مهر 1388, 15:58 عصر
من از دموی ایندی واسه پینگ کردن استفاده کرده ام .
اما وقتی یه سایتی رو پینگ می کنم جواب خوبی نمی ده . گاهی جواب می ده بعد از کلی
پینگ کردن و گاهی هم جواب نمی ده . ایندی من10.2.5 هست
و تو دلفی 2009 کامپایل کردم
حتی وقتی آدرس آی پی اون رو به جا ی اسمش وارد می کنم بازم همونطوره
اما وقتی با دستور پینگ خود ویندوز از پرامت پینگ می کنم مشکلی نداره
این اشکال از چیه
لطفا کمک کنید
سلام. بالاخره یکی این تاپیک رو از اعماق خاک بیرون کشید:لبخند:(محض مزاح عرض کردم). این مورد رو بنده هم تست کردم البته با سورس خودم و دلفی 7 و ایندی 8 (همشون زیرخاکی هستن عین خودم). تقریبا مثل شما جواب گرفتم. مقصر اصلی حادثه هم خاصیتی به نام RecieveTimout هستش. اگه این زمان کم تعیین بشه یا سرعت خط اونقدر زغالی باشه که زمان پاسخ هاست بیشتر از این زمان بشه اون فاجعه ای که حضرت عالی بهش اشاره کردین رخ حواهد داد. برنامه نمونه رو توی ضمیمه تقدیم کردم.
موفق باشید...
tadeh2010
چهارشنبه 04 آبان 1390, 14:21 عصر
سلام خیلی خوب بود.
ولی یک سوال اگر بخواهیم n تا IP مختلف را همزمان Ping بکنیم چی کار باید کرد؟
تحقیقاتی در این باره کردم ولی به نتیجه کلی نرسیده ام
1-می شود با threadها هر IP ای را کنترل کرد. ولی بلد نیستم
2-می شود با متد new برای هر IP یک Timer و Indy جداگانه ساخت . که بازهم چگونگی کار را بلد نیستم
حالا یکی از اساتید فن کمکم بکند
ممنونم
مجتبی تاجیک
جمعه 06 آبان 1390, 09:22 صبح
سلام خیلی خوب بود.
ولی یک سوال اگر بخواهیم n تا IP مختلف را همزمان Ping بکنیم چی کار باید کرد؟
تحقیقاتی در این باره کردم ولی به نتیجه کلی نرسیده ام
1-می شود با threadها هر IP ای را کنترل کرد. ولی بلد نیستم
2-می شود با متد new برای هر IP یک Timer و Indy جداگانه ساخت . که بازهم چگونگی کار را بلد نیستم
حالا یکی از اساتید فن کمکم بکند
ممنونم
تو پست شماره 66 این تاپیک (http://barnamenevis.org/showthread.php?209792-%D8%B3%D9%88%D8%B1%D8%B3%D9%87%D8%A7%D9%8A-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A2%D9%85%D9%88%D8%B2%D8%B4%D9%8A&p=1365398#post1365398) براتون یه نمونه قرار دادم .
hp1361
یک شنبه 29 آبان 1390, 21:55 عصر
سلام
من از IdICMP برای پینگ کردن استفاده کردم اما وقتی یک IP خارج از Lan وارد می کنم چون Default Gateway اجازه خارج شدن و نمیده ارور Unreachable رو دیافت نمی کنم و فقط Timeout دریافت می کنم در حالیکه توی command prompt دقیقا همین مورد ذکر میشه.راه حل چیه که مثل command prompt نتیجه بگیرم؟
tadeh2010
یک شنبه 29 آبان 1390, 23:37 عصر
سلام
امکان دارد یک مثال بزنید
و فرق بین آنچه command prompt و برنامه شما نمایش می دهد را با مثال بیان بکنید.
hp1361
دوشنبه 30 آبان 1390, 13:11 عصر
حالت command prompt
78185
حالت برنامه
78184
tadeh2010
دوشنبه 30 آبان 1390, 19:37 عصر
سلام دوست عزیز
من هم دارم بر روی پروژه ای کار می کنم که کار پینگ کردن را انجام می دهد
با این فرق که من چند IP را یک زمان و بطور متنواب می خواهم پینگ بکنم
بعد از مدتها جستجو و کارهای متفاوت و همچنین کمک اساتیدی همچون آقای مجتبی تاجیک که در پست 9 همین تاپیک هم کمک بزرگی به من کردند
توانستم بعد از جستجو های زیادی کامپوننت و برنامه جالبی در این زمینه پیدا بکنم
و با تغییر ابتدایی و کوچکی مثال ساده ای از یک برنامه ی مانیتورینگ نودها را بسازم
برنامه همراه با کامپوننتهایش را برایتان upload کرده ام
همچنین برای اطلاعات بیشتر سایتهایی هم که خودم کامپوننتها یا برنامه را از آنها دانلود نموده ام را اضافه کرده ام
http://www.magsys.co.uk/delphi/magics.asp
http://www.overbyte.be/frame_index.html
درضمن من از دلفی 2010 استفاده می کنم و تمامی PChar ها را به صورت
PAnsiChar(AnsiString(Str)) استفاده کرده ام.
یک مورد دیگر من هنوز برنامه ام را کامل نکرده ام اگر به نتیجه رسیدید من را فراموش نکنید حتما شما هم می توانید گوشه ای از سوالات من را پاسخ دهید
متشکرم
http://www.4shared.com/file/lu-l_YLH/Ping.html
اگر مشکلی در دانلود فایل داشتید حتما مطلعم سازید.
hp1361
یک شنبه 06 آذر 1390, 20:34 عصر
سلام دوست عزیز Tadeh2010
لینک هایی که دادی واقعا مفید بودند.
کامپوننت ها رو دانلود کردم و نصب کردم و از یونیتی که در لینک اول گذاشته شده بود هم استفاده کردم و با استفاده از یک حلقه For به تعداد مورد نیاز ترد ساختم.برنامه هم فریز نشد.
باز هم ممنون
vBulletin® v4.0.8, Copyright ©2000-1390, Jelsoft Enterprises Ltd.