PDA

View Full Version : چگونگی ping کردن IP



kamal_habibi
شنبه 30 تیر 1386, 01:00 صبح
من میخواستم یک برنامه بنویسم و بتونم یک IP درشبکه رو Ping کنم و نتیجه آن را در یک Memo ببینم اگه سورس کاملی در این رابطه دارید لطفا بذارید:ناراحت:

vcldeveloper
شنبه 30 تیر 1386, 02:29 صبح
با استفاده از Indy به راحتی می تونید این کار را انجام دهید. در Demoهای Indy مثالی به اسم PingGUI وجود داره گه دقیقا همین کاری که شما میخواید رو انجام میده (البته نتیجه را در یک ListBox میریزه بجای Memo).
Demo های Indy را می توانید از سایتش دانلود کنید، همراه دلفی نیستند.

Batman
شنبه 30 تیر 1386, 08:19 صبح
آقای کشاورز ممکنه آدرس رو هم بگید

vcldeveloper
شنبه 30 تیر 1386, 14:13 عصر
http://www.indyproject.org/

kamal_habibi
شنبه 30 تیر 1386, 23:01 عصر
سالم دوستان بالاخره با کمی کلنجار رفتن تونستم یه چیز جالب درست کنم
میخوام که شما هم استفاده کنید
جهت استفاده برای پینگ کردن در یک شبکه

iamehsan56
سه شنبه 07 مهر 1388, 13:21 عصر
من از دموی ایندی واسه پینگ کردن استفاده کرده ام .
اما وقتی یه سایتی رو پینگ می کنم جواب خوبی نمی ده . گاهی جواب می ده بعد از کلی
پینگ کردن و گاهی هم جواب نمی ده . ایندی من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, 14:28 عصر
من از دموی ایندی واسه پینگ کردن استفاده کرده ام .
اما وقتی یه سایتی رو پینگ می کنم جواب خوبی نمی ده . گاهی جواب می ده بعد از کلی
پینگ کردن و گاهی هم جواب نمی ده . ایندی من10.2.5 هست
و تو دلفی 2009 کامپایل کردم
حتی وقتی آدرس آی پی اون رو به جا ی اسمش وارد می کنم بازم همونطوره
اما وقتی با دستور پینگ خود ویندوز از پرامت پینگ می کنم مشکلی نداره
این اشکال از چیه
لطفا کمک کنید


سلام. بالاخره یکی این تاپیک رو از اعماق خاک بیرون کشید:لبخند:(محض مزاح عرض کردم). این مورد رو بنده هم تست کردم البته با سورس خودم و دلفی 7 و ایندی 8 (همشون زیرخاکی هستن عین خودم). تقریبا مثل شما جواب گرفتم. مقصر اصلی حادثه هم خاصیتی به نام RecieveTimout هستش. اگه این زمان کم تعیین بشه یا سرعت خط اونقدر زغالی باشه که زمان پاسخ هاست بیشتر از این زمان بشه اون فاجعه ای که حضرت عالی بهش اشاره کردین رخ حواهد داد. برنامه نمونه رو توی ضمیمه تقدیم کردم.
موفق باشید...

tadeh2010
چهارشنبه 04 آبان 1390, 12:51 عصر
سلام خیلی خوب بود.
ولی یک سوال اگر بخواهیم n تا IP مختلف را همزمان Ping بکنیم چی کار باید کرد؟
تحقیقاتی در این باره کردم ولی به نتیجه کلی نرسیده ام
1-می شود با threadها هر IP ای را کنترل کرد. ولی بلد نیستم
2-می شود با متد new برای هر IP یک Timer و Indy جداگانه ساخت . که بازهم چگونگی کار را بلد نیستم
حالا یکی از اساتید فن کمکم بکند
ممنونم

Felony
جمعه 06 آبان 1390, 07:52 صبح
سلام خیلی خوب بود.
ولی یک سوال اگر بخواهیم 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:25 عصر
سلام

من از IdICMP برای پینگ کردن استفاده کردم اما وقتی یک IP خارج از Lan وارد می کنم چون Default Gateway اجازه خارج شدن و نمیده ارور Unreachable رو دیافت نمی کنم و فقط Timeout دریافت می کنم در حالیکه توی command prompt دقیقا همین مورد ذکر میشه.راه حل چیه که مثل command prompt نتیجه بگیرم؟

tadeh2010
یک شنبه 29 آبان 1390, 23:07 عصر
سلام
امکان دارد یک مثال بزنید
و فرق بین آنچه command prompt و برنامه شما نمایش می دهد را با مثال بیان بکنید.

hp1361
دوشنبه 30 آبان 1390, 12:41 عصر
حالت command prompt
78185

حالت برنامه
78184

tadeh2010
دوشنبه 30 آبان 1390, 19:07 عصر
سلام دوست عزیز
من هم دارم بر روی پروژه ای کار می کنم که کار پینگ کردن را انجام می دهد
با این فرق که من چند 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:04 عصر
سلام دوست عزیز Tadeh2010

لینک هایی که دادی واقعا مفید بودند.
کامپوننت ها رو دانلود کردم و نصب کردم و از یونیتی که در لینک اول گذاشته شده بود هم استفاده کردم و با استفاده از یک حلقه For به تعداد مورد نیاز ترد ساختم.برنامه هم فریز نشد.

باز هم ممنون

program103
جمعه 12 اسفند 1390, 19:49 عصر
سلام دوست عزیز
من هم دارم بر روی پروژه ای کار می کنم که کار پینگ کردن را انجام می دهد
با این فرق که من چند 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
اگر مشکلی در دانلود فایل داشتید حتما مطلعم سازید.
ظاهرا فیلتر شده. میشه لینک درست رو بذارید؟؟

tadeh2010
جمعه 12 اسفند 1390, 21:26 عصر
سلام
چک کردم
این لینکها درست بودند (بدون فیلتر شکن)
http://www.magsys.co.uk/delphi/magics.asp
http://www.overbyte.be/frame_index.html
البته این دوتا سایت فوق سایتهایی هستند که من از آنها کامپوننتها و برنامه هایی را دانلود کردم که در ساخت برنامه ام کمکم کردند.
و لینک سومی حق با شماست!؟:متعجب:
خوب یه جایی را پیشنهاد بکنید من برنامه را بگذارم که همه بتوانند بردارند.آیا توی همین سایت هم می شود چنین کاری کرد؟
اگر هم می خواهید یک ایمیل بدهید تا برایتان ایمیلش بکنم.

saeed.tousi
سه شنبه 06 تیر 1391, 21:06 عصر
سلام دوستان
من این تایپیک رو چندین مرتبه خوندم.باضافه یکی دو هفته ای هم هست دارم توی اینترنت سرچ میکنم
خوب مطالب زیادی هم بدست آوردم اما تمام کدها ،یک error به من میدن
اون ارور هم اینه :
socket error #13 access denied

حتی بعد از این هم توی cmd دستور scktsrvr - install رو هم اجرا کردم
ولی باز هم این ارتباط برقرار نشد

ممنون میشم اگه به من کمک کنید

بهروز عباسی
سه شنبه 06 تیر 1391, 21:24 عصر
درود
اینــــــــــو (http://delphi.about.com/od/internetintranet/l/aa081503a.htm)ببین

واینم یک نمونه

موفق باشید.

tadeh2010
سه شنبه 06 تیر 1391, 22:44 عصر
سلام دوست عزیز
من متوجه مشکل شما نشدم!؟
یعنی با این error تا به حال برخورد نداشتم
این ایراد( socket error #13 access denied )چه موقعی پیش می آید؟
موقعی که از داخل برنامتان می خواهید IP ای را پینگ نمایید؟
آیا با دستور پینگ ویندوز مشکلی دارید، بعنی درموقع پینگ کردن همان IP در Run با ایرادی مواجه می شوید؟
آیا از برنامه دوستمان آقای عباسی استفاده کردید؟

saeed.tousi
سه شنبه 06 تیر 1391, 22:49 عصر
tadeh 2010 : آره امتحان کردم و مشکلی نداشتم
فقط وقتی که می خوام یک ip رو تست کنم(exe برنامه) این error رو میده

جناب عباسی از توجه شما بسیار متشکرم
اما این لینکی (http://delphi.about.com/od/internetintranet/l/aa081503a.htm) رو هم که گذاشتید قبلاً تست کردم
و باز هم با مشکل مواجه شدم
البته مشکلی با سوکت نداشتم تنها یک errror ،به دو خط کد زیر میده

phe := GetHostByName(PChar(AIP));
.
.
.
pac := phe^.h_addr_list^;

و می خواد که بجای pchar از pansichar استفاده کنم

خوب من هم کد ؛رو به صورت زیر تغییر دادم و در نهایت با همون error سوکت مواجه شدم

phe := GetHostByName(pansichar(pstring(AIP)));
.
.
pac := pchar(phe^.h_addr_list^);

بهروز عباسی
سه شنبه 06 تیر 1391, 22:56 عصر
و باز هم با مشکل مواجه شدم
اون برنامه ای که گذاشتم با Delphi XE و Win 7 تست کردم IP بهش دادم و بدون مشکل اجرا شد.

tadeh2010
شنبه 24 تیر 1391, 08:16 صبح
سلام
من یک برنامه درست کردم برای multi ping کردن که به صورت فرم MDI می باشد ولی بلد نیستم که از Thread ها استفاده بکنم کسی می تواند کمک بکند.
اگر بشود از Thread استفاده کرد برای هر فرمی که ساخته می شود (هر IP یک نام که برای کپشن فرم می باشد می گیرد و یک form child ساخته میشود که داخلش یک timer می باشد که هر یک ثانیه یا هر زمانی که تنظیم کرده باشیم از طریق کامپوننت ایندی ICMP آی پی فرم مربوطه را پینگ می کند)،
برنامه بسیار خوبی برای مدیران شبکه ها می شود.
source کامل اش را گزاشته ام.
http://s1.picofile.com/file/7436161177/with_ICMP.rar.html