در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

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

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

توسط Wake On Lan


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

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

روش کار به این صورت هست: 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 آدرس کامپیوتر مقصد شود .

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

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

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

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


برای این کار باید قابلیت 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>

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

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


نویسنده : فرهاد خانلری

منبع : انجمن تخصصی فناوری اطلاعات ایران

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد

#روشن_کردن_سیستم_ها_در_شبکه #روشن_شدن_سیستم #روشن_کردن_کامپیوتر_ها_از_راه_دور #برنامه_نویسی_سی_شارپ_و_شبکه
1 نظر
کمیل یوسفی کمالی

متشکرم دوست عزیز و گرامی

ان شاءالله خداوند به شما پاداش و جزای خیر بدهد

در صورت امکان آموزش از این قبیل برنامه ها را که برای مدیران شبکه کارآیی دارد را ادامه بدهید

پیشنهاد میکنم در زمینه ارسال پیامک وضعیت سرور و سوییچ ها و کلاینت های شبکه و همچنین ثبت رویدادها و مانیتورینگ هم به هر صورتی که می توانید نیز آموزش تهیه نمایید

موفق باشید

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....