[.Net] Classe Wake On Lan en Vb.Net

wake on lan

Afin de démarrer vosordinateurs via le réseau, vous pouvez utiliser le Wake On Lan (WOL).

Pour ceux qui ne connaissent pas le Wake On Lan, je vous invite à aller sur la page de Wikipedia.

Pour automatiser le démarrage de mes machines, j'ai donc codé une petit classe en Vb.Net (qui sera facile de convertir en C#):

Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports System.Globalization

Public Class WOL
    ''' 
    ''' Fonction qui lance un WOL
    ''' 
    ''' 
    ''' 
    ''' 
    Public Shared Sub WakeUp(ByVal MacAddress As String, Optional ByVal BroadCast As String = "255.255.255.255")
        Dim udp As New UdpClient With {.EnableBroadcast = True}
        Try
            udp.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1)
            Dim offset As Integer = 0
            Dim buf(512) As Byte

            'les 6 premiers bytes sont &HFF
            For i As Integer = 0 To 5
                buf(offset) = &HFF
                offset += 1
            Next

            'on repete l'addresse MAC 16 fois
            For i As Integer = 0 To 15
                Dim n As Integer = 0
                For j As Integer = 0 To 5
                    buf(offset) = Byte.Parse(MacAddress.Substring(n, 2), NumberStyles.HexNumber)
                    offset += 1
                    n += 2
                Next
            Next

            'on envoie le wol
            udp.Send(buf, 512, New IPEndPoint(IPAddress.Parse(BroadCast), &H1))

        Catch ex As Exception
            udp.Close()
            Throw ex
        End Try
    End Sub
End Class

Et pour ceux qui souhaite, j'ai mis à disposition une archive contenant le projet Wake On Lan. Il est disponible ici.


Leave a Reply

Your email address will not be published. Required fields are marked *