PDA

View Full Version : اطلاع از وضغیت یک IP



kingtak
چهارشنبه 17 آبان 1391, 13:24 عصر
سلام دوستان
چطور میتونم توی ویندوز از آنلاین یا آفلاین بودن یک ip خبردار بشم.(غیر از روش ping)
مثلا تو لینوکس یه دستوری بود میزدیم که توی نتیجش فقط می گفت فلان آی پی آنلاین هستش یا آفلاین.من معادل همین دستور رو توی سی شارپ میخوام.
اگه کتابخانه ای توی دات نت هست که همین کار رو انجام بده معرفی کنید لطفا.چون میخوام توی یک برنامه استفادش کنم. توی سی شارپ این برنامه رو با پینگ نوشتم ولی چون تعداد آی پی ها زیاد بود و یهو حجم زیادی از اطلاعات رد و بدل می شدبرنامه هنگ می کرد.حالا من چیزی میخوام که بتونم توی برنامم برای چک کردن همزمان 200 تا آی پی استفاده کنم.

Farshid007
چهارشنبه 17 آبان 1391, 15:30 عصر
خوب از چند نخی استفاده کن برای پینگ کردن 200 تا ای پی هم زمان

kingtak
چهارشنبه 17 آبان 1391, 18:45 عصر
ممنون که جواب دادید.یعنی با چند نخی دیگه این مشکل حل میشه؟:گیج:
راهی غیر از پینگ کردن وجود نداره که از آنلاین یا آفلاین بودن یک آی پی مطلع بشیم؟!!!!
آخه توی پینگ حجم زبتدی از اطلاعات که رد و بدل میشه ترافیک شبکه رو هم می گیره!!!!میخوام روشی باشه که از لحاظ ترافیک هم صرف کنه!!!

mansourm
پنج شنبه 18 آبان 1391, 23:59 عصر
دوست عزیز شما از تمامی پروتوکل های اتصال گرا می توانید استفاده کنید امام ساده ترین همان tcp هست
در سی شارپ شما برای تابع ping که می نویسید میتونید تعداد paket و تعداد دفعات ارسال paket را مشخص کنید

اینم تابع کامل ping در سی شارپ با استفاده از thred




public void ping()
{

try
{
string ip = "167.65.55.1";
Ping pingSender = new Ping();
string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 2000;
PingOptions options = new PingOptions(64, true);
int x = 0;
for (int i = 0; i < 2; i++)
{
PingReply reply = pingSender.Send(ip, timeout, buffer, options);
if (reply.Status == IPStatus.Success)
x++;
}
if (x>0)
MessageBox.Show("OK");
else if(x==0)
MessageBox.Show("NO");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}



برای فرا خوانی یک button به فرم اضافه کنید و در رویداد کلیک button کد زیر را وارد نمایید




Thread thread = new Thread(ping);
thread.Start();