2012/08/27(Mon)Wake On Lan In C#
ある日のTwitterにて。
- @ttsuki: 2メートル離れたところにあるデスクトップPCの電源を入れるために、わざわざputtyでNASにログインしてWoLパケット投げさせるっていうのはどうなんだろう。馬鹿じゃないの。というか、同一LAN内なんだから自分でMagicPacket投げたらええやん。馬鹿じゃないの。
- @kero7:@ttsuki Windows用WoLクライアントとしては、これがオススメ。http://www.forest.impress.co.jp/article/2003/04/23/okiniiri.html … たまに2回起動しないと起きないこともあるけど、設定が単純なんで。
気まぐれにdevenvしておよそ10分後にできたものがこれだっ
using System; using System.Collections.Generic; using System.Globalization; using System.Net; using System.Net.Sockets; using System.Text; namespace WoL { class Program { static void Main(string[] args) { // args[0] = "DE-AD-BE-EF-11-FE" new Action<string>(a=>new UdpClient(0).Send(Array.ConvertAll(("FF-FF-FF-FF-FF-FF-"+string.Join("-",new string[]{a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a})).Split('-'), s=>byte.Parse(s, NumberStyles.AllowHexSpecifier)),102,new IPEndPoint(0xFFFFFFFF, 9)))(args[0]); } } }
設定など要らんっ
自分のマシンに対して使って動くことは確認した。
ほんとは140文字以内にしてツイートしたかった。
追記
解説した。
それを踏まえて上のコードを分解。