Atelier : Wake-On-LAN.


1
Correction.

La correction correspond à l'interface représentée ci-contre.

Le nom des contrôles est :

  • Text_Adresse_MAC
  • CmdWake
  • CmdQuitter
  • TextMonitor
  • Winsock1 (invisible à l'exécution).
Private Sub CmdQuitter_Click()
  End
End Sub

Private Sub CmdWake_Click()
  WakeUp Text_Adresse_MAC.Text
End Sub

Sub WakeUp(Adresse_MAC As String)
  ' Reçoit une adresse MAC en paramètre (= "adresse physique")
  ' Réveille la machine correspondante, par envoi d'une trame UDP.
  Dim Magic_Packet As String
  Dim Adresse_MAC_Octale As String
  Dim iOctet As Integer, NbTimes As Integer

  ' Transforme l'adresse MAC (reçue au format texte) en suite d'octets
  Adresse_MAC_Octale = ""
  For iOctet = 0 To 5
    Adresse_MAC_Octale = Adresse_MAC_Octale + Chr(CInt("&h" & Mid$(Adresse_MAC, iOctet * 3 + 1, 2)))
  Next iOctet

  ' Construit le "magic packet"
  Magic_Packet = ""
  For NbTimes = 1 To 6
    Magic_Packet = Magic_Packet + Chr(255)
  Next
  For NbTimes = 1 To 16
    Magic_Packet = Magic_Packet + Adresse_MAC_Octale
  Next
  ' Affiche le "magic packet" dans la zone de monitoring
  For i = 1 To Len(Magic_Packet)
    If Asc(Mid$(Magic_Packet, i, 1)) < 10 Then s = s & "0"
    s = s & Hex(Asc(Mid$(Magic_Packet, i, 1)))
  Next
  TextMonitor.Text = s
  ' Envoie le "magic packet" et réveille la machine
  Winsock1.SendData Magic_Packet
End Sub


Sébastien PASTORE.