# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > WCF , Web Services , .Net Remoting >  روشن کردن کامپیوتر از راه دور ؟

## majid325

با سلام:
کسی میدونه یک کامپیوتر را چه جوری با استفاده از کد نویسی(بدون استفاده از برنامه های کمکی)میشه از راه دور روشن کرد؟
با تشکر

----------


## i_naderpour

آره با فیزیکال ADDRESS میشه روشنش کرد اگه غیر از این میخوای نمیدونم , اما اگه همینو میخوای میتونم کدش رو پیدا کنم برات

----------


## Identifier

> ا فیزیکال ip میشه


با استفاده از MAC Address و یا همان فیزیکال آدرس نه فیزیکال IP میتونید اینکار را انجام بدید در بخش شبکه قبلا نحوه انجام این کار را توضیح داده ام.
اما این کار منوظ به دانستن MAC Address کارت شبکه دستگاه مورد نظر و همچنین امکان Broadcast کردن پکت های UDP داره.

----------


## SabaSabouhi

با سلام
این کاملاً به کامپیوتر و BIOS اون مربوط مى‌شه. شما هنگام Boot شدن کامپیوتر دکمه‌ى Del را بزنید. (اغلب کامپیوترها با این کلید وارد BIOS-Setup مى‌شن) و ببینید کامپیوتر شما با چه رویدادهایى امکان روشن شدن داره.
یکى از این رویدادها همانطور که دوستان اشاره کردند دریافت Packet از طریق کارت شبکه هست.
روش دیگه با استفاده از مودم هست، یعنى با زنگ خوردن خط تلفنى که به کامپیوتر متصل هست کامپیوتر روشن بشه البته اگر منظورتون این باشه باید توجه کنید که با تماس اول نمى‌تونید ارتباط رو برقرار کنید چون تا کامپیوتر روشن بشه و قابل استفاده تماس تلفنى شما وقتش تموم شده و باید مجدداً تماس بگیرید که این دفعه چون کامپیوتر شما روشن شده تماس برقرار مى‌شود. (پس از گذشت یک دقیقه مخابرات ارتباط رو قطع مى‌کنه و شما بوق اشغال مى‌شنوید.)

صباصبوحى

----------


## majid325

> با سلام
> .
> روش دیگه با استفاده از مودم هست، یعنی با زنگ خوردن خط تلفنی که به کامپیوتر متصل هست کامپیوتر روشن بشه البته اگر منظورتون این باشه باید توجه کنید که با تماس اول نمی‌تونید ارتباط رو برقرار کنید چون تا کامپیوتر روشن بشه و قابل استفاده تماس تلفنی شما وقتش تموم شده و باید مجدداً تماس بگیرید که این دفعه چون کامپیوتر شما روشن شده تماس برقرار می‌شود. (پس از گذشت یک دقیقه مخابرات ارتباط رو قطع می‌کنه و شما بوق اشغال می‌شنوید.)
> 
> صباصبوحی


با تشکر ..آیا در این روش میشه چک کرد که یک عددی وارد بشه به عنوان Password ؟

من فقط میخوام کامپیوتر روشن بشه ...بعدش با یه exe در startup کارم را انجام میدم


مودم باید از نوع خاصی باشد؟

----------


## majid325

> با استفاده از MAC Address و یا همان فیزیکال آدرس نه فیزیکال IP میتونید اینکار را انجام بدید در بخش شبکه قبلا نحوه انجام این کار را توضیح داده ام.
> اما این کار منوظ به دانستن MAC Address کارت شبکه دستگاه مورد نظر و همچنین امکان Broadcast کردن پکت های UDP داره.


با تشکر:
من کد شما را دیدم...اگه اشتباه نکنم جاوا است...به زبان C#‎ را ندارید....یا همان کد شما را من باید به چه طریقی اجرا کنم؟
در ضمن کامپیوتر مورد نظر مشخص است .
--------------------



> آره با فیزیکال ip میشه روشنش کرد اگه غیر از این میخوای نمیدونم , اما اگه همینو میخوای میتونم کدش رو پیدا کنم برات


تشکر میکنم.
اگه کد به زبان C#‎ /vb.net داری بدی خوبه!

----------


## Identifier

using System;
using System.Net.Sockets;

//we derive our class from a standart one
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);
    }
 }
 
...
//now use this class
 //MAC_ADDRESS should  look like '013FA049'
 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();
      //set sending bites
      int counter=0;
      //buffer to be send
      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),
                  NumberStyles.HexNumber);
              i+=2;
         }
     }

     //now send wake up packet
     int reterned_value=client.Send(bytes,1024);
 }

----------


## Touska

در تکمیل صحبتهای دوستمون : WOL

موفق باشید :)

----------


## SabaSabouhi

> با تشکر ..آیا در این روش میشه چک کرد که یک عددی وارد بشه به عنوان Password ؟
> من فقط میخوام کامپیوتر روشن بشه ...بعدش با یه exe در startup کارم را انجام میدم
> مودم باید از نوع خاصی باشد؟


سلام
نه چیزى را نمى‌توانید چک کنید، با برقرارى تماس کامپیوتر به شکل کاملاً عادى روشن مى‌شود. البته مى‌توانید برنامه‌اى در Startup داشته باشید اما نمى‌توانید به شکل پارامترى یا روش دیگه به اون برنامه اعلام کنید که کامپیوتر چطورى روشن شده. ( با مودم یا بواسطه کاربر)

در مورد مودم هم هیچ محدودیتى وجود نباید داشته باشه محدودیت فقط این هست که BIOS کامپیوتر شما از این عمل پشتیبانى مى‌کنه یا نه (که در کامپیوترهاى جدید تقریباً در تمامشون این پشتیبانى وجود داره)

در ControlPanel~phone and modem options در Tab مودم دکمه‌ى Properties را بزنید. فرم جدیدى باز مى‌شود در یکى از Tabهاى آن Check boxاى وجود دارد که مى‌پرسد آیا کامپیوتر از طریق این مودم روشن شود؟

صبا صبوحى

----------


## majid325

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

----------


## b0rn2kill

سلام بچه ها من می خوام با استفاده از برنامه Wake on lan سیستمم رو از راه دور از Hibernate mode در بیارم
البته سیستمم  bios password داره موقع بوت شدن هم روی سیستم عاملم (ویندوز 7) پسورد ادمین گذاشتم.
می تونم از راه دور این پسورد هارو وارد کنم؟ بنا به دلایلی نمی تونم پسورد هارو بردارم
اگه solution برای لینوکس باشه که بتونه این کارارو انجام بده هم خوبه
روی لیلو هم پسورد گذاشتم.روی کاربر Root هم پسورد دارم کسی راه حلی براش داره ؟

----------

