درخواست های ارتباط
جستجو
لیست دوستان من
صندوق پیام
همه را دیدم
  • در حال دریافت لیست پیام ها
صندوق پیام
رویدادها
همه را دیدم
  • در حال دریافت لیست رویدادها
همه رویدادهای من
تخفیف های وب سایت
همه تخفیف ها

عضویت در

کانال تلگرام

توسینسو

اطلاعات مطلب
مدرس/نویسنده
فرهاد خانلری
امتیاز: 146516
رتبه:7
2
322
548
3260
فرهاد خانلری ، مدرس شبکه و برنامه نویسی مبتنی بر زیرساخت های مایکروسافت ، سابقه فعالیت در موسسات و مراکز دولتی در قالب پروژه ، مشاوره و تدریس ، برنامه نویسی ++C ، سی شارپ و دات نت ، متخصص و مدرس شبکه های مبتنی بر سیستم عاملهای مایکروسافت و سرویس های مربوطه ، سخت افزار و ... پروفایل کاربر

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

تاریخ 57 ماه قبل
نظرات 1
بازدیدها 1742
در آموزش قبلی خاموش کردن کامپیوتر های متصل به شبکه (از راه دور) را توضیح دادیم در این آموزش روشن کردن سیستم را توسط برنامه نویسی سی شارپ می آموزیم.فرض کنید یک شبکه 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 هم استفاده کنیم و وصلش کنیم به یه فایل ..


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

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

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

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