من میخواستم یک برنامه بنویسم و بتونم یک IP درشبکه رو Ping کنم و نتیجه آن را در یک Memo ببینم اگه سورس کاملی در این رابطه دارید لطفا بذارید
من میخواستم یک برنامه بنویسم و بتونم یک IP درشبکه رو Ping کنم و نتیجه آن را در یک Memo ببینم اگه سورس کاملی در این رابطه دارید لطفا بذارید
با استفاده از Indy به راحتی می تونید این کار را انجام دهید. در Demoهای Indy مثالی به اسم PingGUI وجود داره گه دقیقا همین کاری که شما میخواید رو انجام میده (البته نتیجه را در یک ListBox میریزه بجای Memo).
Demo های Indy را می توانید از سایتش دانلود کنید، همراه دلفی نیستند.
وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.
وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.
سالم دوستان بالاخره با کمی کلنجار رفتن تونستم یه چیز جالب درست کنم
میخوام که شما هم استفاده کنید
جهت استفاده برای پینگ کردن در یک شبکه
من از دموی ایندی واسه پینگ کردن استفاده کرده ام .
اما وقتی یه سایتی رو پینگ می کنم جواب خوبی نمی ده . گاهی جواب می ده بعد از کلی
پینگ کردن و گاهی هم جواب نمی ده . ایندی من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;
سلام. بالاخره یکی این تاپیک رو از اعماق خاک بیرون کشید(محض مزاح عرض کردم). این مورد رو بنده هم تست کردم البته با سورس خودم و دلفی 7 و ایندی 8 (همشون زیرخاکی هستن عین خودم). تقریبا مثل شما جواب گرفتم. مقصر اصلی حادثه هم خاصیتی به نام RecieveTimout هستش. اگه این زمان کم تعیین بشه یا سرعت خط اونقدر زغالی باشه که زمان پاسخ هاست بیشتر از این زمان بشه اون فاجعه ای که حضرت عالی بهش اشاره کردین رخ حواهد داد. برنامه نمونه رو توی ضمیمه تقدیم کردم.
موفق باشید...
آخرین ویرایش به وسیله babakmomeni : سه شنبه 07 مهر 1388 در 15:45 عصر دلیل: ضمیمه کردن فایل
سلام خیلی خوب بود.
ولی یک سوال اگر بخواهیم n تا IP مختلف را همزمان Ping بکنیم چی کار باید کرد؟
تحقیقاتی در این باره کردم ولی به نتیجه کلی نرسیده ام
1-می شود با threadها هر IP ای را کنترل کرد. ولی بلد نیستم
2-می شود با متد new برای هر IP یک Timer و Indy جداگانه ساخت . که بازهم چگونگی کار را بلد نیستم
حالا یکی از اساتید فن کمکم بکند
ممنونم
تو پست شماره 66 این تاپیک براتون یه نمونه قرار دادم .
سلام
من از IdICMP برای پینگ کردن استفاده کردم اما وقتی یک IP خارج از Lan وارد می کنم چون Default Gateway اجازه خارج شدن و نمیده ارور Unreachable رو دیافت نمی کنم و فقط Timeout دریافت می کنم در حالیکه توی command prompt دقیقا همین مورد ذکر میشه.راه حل چیه که مثل command prompt نتیجه بگیرم؟
سلام
امکان دارد یک مثال بزنید
و فرق بین آنچه command prompt و برنامه شما نمایش می دهد را با مثال بیان بکنید.
حالت command prompt
cmd-ping.JPG
حالت برنامه
test-ping.JPG
سلام دوست عزیز
من هم دارم بر روی پروژه ای کار می کنم که کار پینگ کردن را انجام می دهد
با این فرق که من چند 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 : دوشنبه 30 آبان 1390 در 20:08 عصر دلیل: [DOWNLOAD]
سلام دوست عزیز Tadeh2010
لینک هایی که دادی واقعا مفید بودند.
کامپوننت ها رو دانلود کردم و نصب کردم و از یونیتی که در لینک اول گذاشته شده بود هم استفاده کردم و با استفاده از یک حلقه For به تعداد مورد نیاز ترد ساختم.برنامه هم فریز نشد.
باز هم ممنون
سلام
چک کردم
این لینکها درست بودند (بدون فیلتر شکن)
http://www.magsys.co.uk/delphi/magics.asp
http://www.overbyte.be/frame_index.html
البته این دوتا سایت فوق سایتهایی هستند که من از آنها کامپوننتها و برنامه هایی را دانلود کردم که در ساخت برنامه ام کمکم کردند.
و لینک سومی حق با شماست!؟
خوب یه جایی را پیشنهاد بکنید من برنامه را بگذارم که همه بتوانند بردارند.آیا توی همین سایت هم می شود چنین کاری کرد؟
اگر هم می خواهید یک ایمیل بدهید تا برایتان ایمیلش بکنم.
سلام دوستان
من این تایپیک رو چندین مرتبه خوندم.باضافه یکی دو هفته ای هم هست دارم توی اینترنت سرچ میکنم
خوب مطالب زیادی هم بدست آوردم اما تمام کدها ،یک error به من میدن
اون ارور هم اینه :
socket error #13 access denied
حتی بعد از این هم توی cmd دستور scktsrvr - install رو هم اجرا کردم
ولی باز هم این ارتباط برقرار نشد
ممنون میشم اگه به من کمک کنید
درود
اینــــــــــو ببین
واینم یک نمونه
موفق باشید.
Everything that has a beginning has an end. ... The End?
سلام دوست عزیز
من متوجه مشکل شما نشدم!؟
یعنی با این error تا به حال برخورد نداشتم
این ایراد( socket error #13 access denied )چه موقعی پیش می آید؟
موقعی که از داخل برنامتان می خواهید IP ای را پینگ نمایید؟
آیا با دستور پینگ ویندوز مشکلی دارید، بعنی درموقع پینگ کردن همان IP در Run با ایرادی مواجه می شوید؟
آیا از برنامه دوستمان آقای عباسی استفاده کردید؟
tadeh 2010 : آره امتحان کردم و مشکلی نداشتم
فقط وقتی که می خوام یک ip رو تست کنم(exe برنامه) این error رو میده
جناب عباسی از توجه شما بسیار متشکرم
اما این لینکی رو هم که گذاشتید قبلاً تست کردم
و باز هم با مشکل مواجه شدم
البته مشکلی با سوکت نداشتم تنها یک errror ،به دو خط کد زیر میده
phe := GetHostByName(PChar(AIP));
.
.
.
pac := phe^.h_addr_list^;
و می خواد که بجای pchar از pansichar استفاده کنم
خوب من هم کد ؛رو به صورت زیر تغییر دادم و در نهایت با همون error سوکت مواجه شدم
phe := GetHostByName(pansichar(pstring(AIP)));
.
.
pac := pchar(phe^.h_addr_list^);
اون برنامه ای که گذاشتم با Delphi XE و Win 7 تست کردم IP بهش دادم و بدون مشکل اجرا شد.و باز هم با مشکل مواجه شدم
Everything that has a beginning has an end. ... The End?
سلام
من یک برنامه درست کردم برای multi ping کردن که به صورت فرم MDI می باشد ولی بلد نیستم که از Thread ها استفاده بکنم کسی می تواند کمک بکند.
اگر بشود از Thread استفاده کرد برای هر فرمی که ساخته می شود (هر IP یک نام که برای کپشن فرم می باشد می گیرد و یک form child ساخته میشود که داخلش یک timer می باشد که هر یک ثانیه یا هر زمانی که تنظیم کرده باشیم از طریق کامپوننت ایندی ICMP آی پی فرم مربوطه را پینگ می کند)،
برنامه بسیار خوبی برای مدیران شبکه ها می شود.
source کامل اش را گزاشته ام.
http://s1.picofile.com/file/74361611..._ICMP.rar.html
آخرین ویرایش به وسیله tadeh2010 : یک شنبه 25 تیر 1391 در 23:11 عصر دلیل: توضیحات بیشتر