PDA

View Full Version : وضعيت IP



mohsen_r
پنج شنبه 21 آذر 1387, 07:12 صبح
با سلام
من ميخوام يك شماره IP را چك كنم كه آيا در شبكه دستگاه اين IP روشن هست يا نه؟
لطفا با مثال راهنمائي بفرمائيد

AlirezaBahredar
پنج شنبه 21 آذر 1387, 09:26 صبح
با کمک دستور Ping براحتی میتوانید اینکار را انجام دهید.
برای عملیات Ping کافیست از کامپوننت ICMP مربوط به مجموعه Indy استفاده کنید.برای اطلاعات بیشتر میتونید به مجموعه Demo مربوط به کامپوننتهای Indy مراجعه کنید که در آن یک مثال عملی و کاربردی از دستور Ping وجود داره.این مجموعه رو (Demo) می تونی از سایت http://www.indyproject.org/ بطور کامل بگیرید.
موفق باشید.

mohsen_r
پنج شنبه 21 آذر 1387, 11:05 صبح
من تو اين سايت http://www.indyproject.org/ پيدا نكردم ميشه راهنمائي كنيد

Saeed_m_Farid
پنج شنبه 21 آذر 1387, 11:53 صبح
زیاد کار سختی نیس که دنبال Sample بگردی فقط یه کامپوننت TIdIcmpClient تو تب Indy میذاری رو فرمت (اگه نخوای خودت Instance درست کنی) بعد مینویسی :


IdIcmpClient1.Ping([Dest IP])


بعد تو event های کامپوننت OnReply میتونی نتیجه رو ببینی؛ مثلا تو یه Memo مثل پایین :






procedure TForm1.IdIcmpClient1Reply(ASender: TComponent;
const AReplyStatus: TReplyStatus);
begin
case AReplyStatus.ReplyStatusType of
rsEcho: Memo1.Lines.Add(IdIcmpClient1.Binding.IP + ' echo');
rsTimeOut: Memo1.Lines.Add(IdIcmpClient1.Binding.IP + ' timeout');
else
Memo1.Lines.Add(IdIcmpClient1.Binding.IP + ' general error');
end;
Memo1.Lines.Add(IntToStr(AReplyStatus.BytesReceive d) + ' bytes from ' + AReplyStatus.FromIpAddress + ' to ' +AReplyStatus.ToIpAddress);
end;


البته اگه بخوای میتونی Ping رو بذاری تو یه تایمر؛ اگه لازمت شد بگو واسه اون یه Sample بهت میدم ...

Saeed_m_Farid
پنج شنبه 21 آذر 1387, 12:18 عصر
من پست قبلی رو عجله ای نوشتم ولی اگه بخوای یه sample اینجا هست:


http://www.ciuly.com/delphi/indy/gatewayPinger/index.html

موفق باشید ...

mohsen_r
پنج شنبه 21 آذر 1387, 12:27 عصر
يعني بايد به جاي Dest IP آپي دستگاه روبرو را بنويسم
ولي هر چي بنويسي نتيجه يك جور هست آيا من بايد تعريف ديگري هم داشته باشم
در ضمن از اين قسمت خطا گرفت AReplyStatus.ToIpAddress

Saeed_m_Farid
پنج شنبه 21 آذر 1387, 12:40 عصر
آره اگه [DestIp] درست نباشه یعنی اون IP که میخواین Ping کنین Error میده ضمنا این فقط یه شروع واسه Ping کردن بود واسه کارهای عملی بهتره نتیجه رو تو یه Thread جداگانه بررسی کنید من یه مقدار اون Sample رو تغییر دادم ولی واسه جواب کامل باید بگین میخواید با ماشین مقصد چی کار کنید (انشا... که نیتتون خیره)
میتونین فایل ضمیمه رو ببینید. البته گفتم اون مثال عجله ای بود شاید بدرد کار شما نخوره ...

mohsen_r
شنبه 23 آذر 1387, 09:07 صبح
ولی واسه جواب کامل باید بگین میخواید با ماشین مقصد چی کار کنید (انشا... که نیتتون خیره)
.

ما اون قدر بزرگنشديم كاه كار شر بكنيم من يه برنامه نوشتم كه شخص IP اداره را ثبت ميكنه چون نرم افزار كه در حال استفاده است با دستگاه ها در dominsever ثبت بشن و كار بر ميخواست بدونه يك ip كه اشكال داره ping ميشه يا نه؟

Saeed_m_Farid
شنبه 23 آذر 1387, 15:37 عصر
خوب الان مشکلتون حل نشد؟ مگه اون Sample رو نتونستین استفاده کنید؟ الان اون Thread داره پینگ میکنه و جواب و اکثر اطلاعات مفید و لازم رو هم میبینید؛ اگه بازم مشکل هست ما در خدمتیم ...

mohsen_r
دوشنبه 25 آذر 1387, 08:37 صبح
خيلي ممنون حل شد