درخواست های ارتباط
جستجو
لیست دوستان من
صندوق پیام
همه را دیدم
  • در حال دریافت لیست پیام ها
صندوق پیام
رویدادها
همه را دیدم
  • در حال دریافت لیست رویدادها
همه رویدادهای من
دوره های مرتبط
دوره آموزشی مقدماتی برنامه نویسی به زبان سی شارپ
مدرس: حسین احمدی
این دوره را در 17 قسط خریداری کنید
دوره آموزشی طراحی رابط کاربری با JavaFX
مدرس: hharddy
این دوره را در 13 قسط خریداری کنید
دوره آموزشی برنامه نویسی به زبان پرل بصورت پروژه محور
مدرس: dr-iman
این دوره را در 13 قسط خریداری کنید
دوره تخصصی آموزش متن کاوی با ابزار NLTK
مدرس: taghandiki
این دوره را در 11 قسط خریداری کنید
دوره آموزشی برنامه نویسی WPF در ویژوال استودیو
مدرس: Amirhossein Fazlikhani
این دوره را در 12 قسط خریداری کنید
دوره آموزشی پردازش متن با زبان برنامه نویسی پایتون
مدرس: taghandiki
این دوره را در 20 قسط خریداری کنید
ساخت و مدیریت ربات تلگرام از صفر با زبان سی شارپ
مدرس: مهدی عادلی
این دوره را در 2 قسط خریداری کنید
دوره آموزشی Exploit نویسی به زبان Perl
مدرس: dr-iman
این دوره را در 7 قسط خریداری کنید
دوره آموزشی اسکریپت نویسی Batch یا Batch Scripting در ویندوز به زبان ساده
مدرس: حسین احمدی
این دوره را در 11 قسط خریداری کنید
دوره آموزشی مقدماتی برنامه نویسی جاوا به زبان ساده
مدرس: مهدی عادلی
این دوره را در 17 قسط خریداری کنید

روشن کردن کامپیوتر(سرور)از طریق شبکه با استفاده از سی شارپ

1 نظرات
129 بازدیدها
در آموزش قبلی خاموش کردن کامپیوتر های متصل به شبکه (از راه دور) را توضیح دادیم در این آموزش روشن کردن سیستم را توسط برنامه نویسی سی شارپ می آموزیم.فرض کنید یک شبکه Domain داریم در یک روز سرد زمستانی برق میره طبیعتاً سروری که UPS نداشته باشه خاموش میشه .اگر سرور نزدیک باشه مشکلی نیست دوستان میرن و روشنش میکنن اما اگر دور باشه و کسی نخواد توی سرما بره سرور رو روشن کنه باید چیکار کرد؟

توسط Wake On Lan


نرم افزارهایی هستن که از قابلیت WakeOnLan در mainboard استفاده میکنند البته این در حالی است که mainboard شما این قابلیت رو support کنه .در مرحله اول باید طبق تصویر زیر تنظیمات رو انجام بدیم
Image

روش کار به این صورت هست: packet های ارسالی که در WakeOnLan استفاده می شوند از نوع UDP که مخفف User Datagram Protocol هستند که شامل MAC Address کارت شبکه سیستم مقصد می باشد. Address MAC به صورت استرینگ (String در برنامه نویسی ) در مبنای شانزده هست مثال :

00-1D-7D-C6-A3-C2

برای فرستادن نیاز به شش byte می باشد.این packet شش byte جهت header و جهت مشخص شدن نوع آن به شانزده برابر طول اطلاعات نیاز دارد . مجموع اینها 102 بایت می شود. شش byte اول packet مربوط به header آن است که با 0Xff پر می شود.شش byte دوم packet بایستی برابر با MAC آدرس کامپیوتر مقصد شود .
Image

این packet که UDP) User Datagram Protocol) می باشد به صورت Broadcast بر روی پورت نه(9) ارسال می شود همانند 200.0.0.255 . این packet توسط تمامی کامپیوتر هایی که در شبکه وجود دارند دریافت می شود .اما کامپیوتری که Mac Address آن با Mac Address ای که در packet نوشته شده است یکی باشد روشن می شود .
Image


روشن کردن سیستم توسط برنامه نویسی به زبان سی شارپ


برای این کار باید قابلیت WakeOnLan در mainboard فعال باشد همانند راه قبلی این در حالی است که mainboard شما این قابلیت رو support کنه .کد سی شارپ را مانند زیر انجام دهید:
یک class بسازید که از UDPClient که در NameSpace به نام System.Net.Sockets قرار دارد به ارث ببرد

  public class WOLClass:UdpClient    
{
    public WOLClass():base()
    { }
    //this is needed to send broadcast packet
 
    public void SetClientToBrodcastMode()    
    {
      if(this.Active)
       this.Client.SetSocketOption(SocketOptionLevel.Sock  et,
                                 SocketOptionName.Broadcast,0);
    }
 }
سپس در class اصلی که می خواین از اونجا این کار رو انجام یه Method به صورت زیر بسازید

private void WakeFunction(string MAC_ADDRESS)
        {
            WOLClass client = new WOLClass();
            client.Connect(new
               IPAddress(0xffffffff),  //255.255.255.255  i.e broadcast
 
               0x2fff); // port=12287 let's use this one 
 
            client.SetClientToBrodcastMode();
 
            int counter = 0;
 
            byte[] bytes = new byte[1024];   // more than enough :-)
 
            //first 6 bytes should be 0xFF
 
            for (int y = 0; y < 6; y++)
                bytes[counter++] = 0xFF;
            //now repeate MAC 16 times
 
            for (int y = 0; y < 16; y++)
            {
                int i = 0;
                for (int z = 0; z < 6; z++)
                {
                    bytes[counter++] =
                        byte.Parse(MAC_ADDRESS.Substring(i, 2), System.Globalization.NumberStyles.HexNumber);
                    i += 2;
                }
            }
 
            int reterned_value = client.Send(bytes, 1024);
        }
یه Button به فرم اضافه کنید و رویداد کلیک این Method رو با مک آدرس کامپیوتر مورد نظرتون Call کنید
بصورت زیر
<div style="text-align: left;">WakeFunction("0041a37f5fd2");
</div>
Image

مک آدرس فوق جواب میده اما اگر سیستم شما مک آدرس فوق جواب نداد از - های ما بین مک آدرس استفاده کنید.شاید برای برخی سوال پیش بیاد که این همه کار انجام بدیم تا فقط یک کامپیوتر رو روشن کنیم؟ اگر بخواهیم چند کامپیوتر رو با هم روشن کنیم کافیست یک Text Box رو فرم ایجاد کنیم و مک آدرس رو از داخل اون به برنامه پاس بدیم .البته می تونیم از List هم استفاده کنیم و وصلش کنیم به یه فایل ..


نویسنده : فرهاد خانلری
منبع : انجمن تخصصی فناوری اطلاعات ایران
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد
برچسب ها
مطالب مرتبط

در حال دریافت اطلاعات

نظرات
  • متشکرم دوست عزیز و گرامی
    ان شاءالله خداوند به شما پاداش و جزای خیر بدهد
    در صورت امکان آموزش از این قبیل برنامه ها را که برای مدیران شبکه کارآیی دارد را ادامه بدهید
    پیشنهاد میکنم در زمینه ارسال پیامک وضعیت سرور و سوییچ ها و کلاینت های شبکه و همچنین ثبت رویدادها و مانیتورینگ هم به هر صورتی که می توانید نیز آموزش تهیه نمایید
    موفق باشید

برای ارسال نظر ابتدا به سایت وارد شوید

arrow