Wake on Lan für PDA oder Smartphone an ip Senden

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von sarasa.

    Wake on Lan für PDA oder Smartphone an ip Senden

    hyhy

    ich habe für mein smartphone ein wol script er funktioniert 1a mit windows mobile 5 - 6.1

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub SetReqExpression(ByVal TextSource As TextBox, ByRef SendString As String, ByRef reg As System.Text.RegularExpressions.Regex)
    3. SendString = "0x" & TextSource.Text
    4. Dim regex As String = "\b0[xX][0-9a-fA-F]+\b"
    5. Dim options As System.Text.RegularExpressions.RegexOptions = ((System.Text.RegularExpressions.RegexOptions.IgnorePatternWhitespace Or System.Text.RegularExpressions.RegexOptions.Multiline) _
    6. Or System.Text.RegularExpressions.RegexOptions.IgnoreCase)
    7. reg = New System.Text.RegularExpressions.Regex(regex, options)
    8. End Sub
    9. Private Sub InputError(ByVal TextSource As TextBox)
    10. TextSource.Focus()
    11. TextSource.Select(0, 2)
    12. End Sub
    13. Private Sub verifyInput(ByVal TextSource As TextBox)
    14. Dim SendString As String
    15. Dim reg As System.Text.RegularExpressions.Regex
    16. SetReqExpression(TextSource, SendString, reg)
    17. If reg.IsMatch(SendString) Then
    18. MsgBox("OK")
    19. Else
    20. MsgBox(TextSource)
    21. End If
    22. End Sub
    23. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    24. If TextBox1.Text.Length <> 2 Then Return
    25. TextBox2.Focus()
    26. End Sub
    27. Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
    28. If TextBox2.Text.Length <> 2 Then Return
    29. TextBox3.Focus()
    30. End Sub
    31. Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged
    32. If TextBox3.Text.Length <> 2 Then Return
    33. TextBox4.Focus()
    34. End Sub
    35. Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged
    36. If TextBox4.Text.Length <> 2 Then Return
    37. TextBox5.Focus()
    38. End Sub
    39. Private Sub TextBox5_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox5.TextChanged
    40. If TextBox5.Text.Length <> 2 Then Return
    41. TextBox6.Focus()
    42. End Sub
    43. Private Sub TextBox6_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox6.TextChanged
    44. If TextBox6.Text.Length <> 2 Then Return
    45. Button1.Focus()
    46. End Sub
    47. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    48. WoL.PacketSend(TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text, _
    49. TextBox5.Text, TextBox6.Text)
    50. MsgBox("Wakeup Gesendet!!", MsgBoxStyle.OkOnly, "INFO")
    51. End Sub
    52. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click, Button2.Click
    53. Me.Close()
    54. End Sub
    55. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    56. TextBox1.Text = "00"
    57. TextBox2.Text = "1a"
    58. TextBox3.Text = "4d"
    59. TextBox4.Text = "5a"
    60. TextBox5.Text = "13"
    61. TextBox6.Text = "c6"
    62. PictureBox1.Image = My.Resources.Image1
    63. End Sub
    64. Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
    65. MsgBox("WoL have fun")
    66. End Sub
    67. End Class


    ich weiss nicht wie ich das packet an eine ip senden kann, da ich mein rechner auch von unterwegs wecken will und nicht nur im lan

    danke
    Wenn die Ziel (für PDA) bzw. die Herkunft (für PC) nicht auf LAN beschränkt ist, musst du einfach nur den richtigen Port beim Router weiterleiten ("aufmachen") und am PDA deine Internet-IP angeben.

    Ich finds übrigens "doll" wenn da zwischendurch in deinem Code ein "WoL.PacketSend" auftaucht ohne Referenz, wo dieses Objekt/Klasse/Namespace herkommt ....


    Und "Wake on Local Area Network" gehört übrigens in die Netzwerk-Programmierung ;)
    so du bekommst sie :D

    VB.NET-Quellcode

    1. #Region "System Imports"
    2. Public Class WoL
    3. Private Shared Function GetPacket() As Byte()
    4. 'Initialized Packet length
    5. Dim packet() As Byte = New Byte(17 * 6 - 1) {}
    6. Return packet
    7. End Function
    8. Private Shared Sub WakeUpConect(ByVal client As UdpClient)
    9. Try
    10. Dim newip1 As String
    11. Dim Addresslist1() As IPAddress = Dns.Resolve(Form1.dyndns.Text).AddressList
    12. Dim IPs1 As IPAddress
    13. For Each IPs1 In Addresslist1
    14. newip1 = (IPs1.ToString)
    15. Next IPs1
    16. If Form2.CheckBox1.Checked = True Then
    17. client.Connect(IPAddress.Broadcast, 40000)
    18. Else
    19. client.Connect(newip1, 40000)
    20. End If
    21. Catch ex As Exception
    22. MessageBox.Show("Keine Netzwerk Verbindung")
    23. End Try
    24. End Sub
    25. Private Shared Sub SubmitWOLPacket(ByVal client As UdpClient, ByVal packet As Byte())
    26. 'Packet Sender for WOL
    27. Try
    28. client.Send(packet, packet.Length)
    29. Catch ex As Exception
    30. End Try
    31. End Sub
    32. Private Shared Sub WakeUpPacketBuild(ByVal mac As Byte(), ByVal packet As Byte(), ByVal c As Integer, ByVal j As Integer)
    33. 'Propogates the Nic MAC Address
    34. packet(c * 6 + j) = mac(j)
    35. End Sub
    36. Public Shared Sub PacketSend(ByVal mac1 As String, ByVal mac2 As String, ByVal mac3 As String, ByVal mac4 As String, ByVal mac5 As String, ByVal mac6 As String)
    37. 'moved from Form for future Enhancements!
    38. Dim Mac() As Byte = New Byte() {MacConvert(mac1), MacConvert(mac2), MacConvert(mac3), _
    39. MacConvert(mac4), MacConvert(mac5), MacConvert(mac6)}
    40. WakeUp(Mac)
    41. End Sub
    42. Private Shared Function MacConvert(ByVal MacToConvert) As Long
    43. MacConvert = Long.Parse(MacToConvert, HexNumber)
    44. End Function
    45. Private Shared Sub CreatePacketHeader(ByVal packet As Byte(), ByVal i As Integer)
    46. packet(i) = &HFF
    47. End Sub
    48. Private Shared Sub WakeUp(ByVal mac() As Byte)
    49. ' Creates the 'Magic Packet' to Wake computers on Lan
    50. Dim client As UdpClient = New UdpClient()
    51. WakeUpConect(client)
    52. ' WOL packet contains a 6-bytes trailer and 16 times a 6-bytes sequence
    53. ' containing the MAC address.
    54. ' Trailer of 6 times 0xFF.
    55. Dim packet As Byte() = GetPacket()
    56. Dim i As Integer
    57. For i = 0 To 5
    58. CreatePacketHeader(packet, i)
    59. Next
    60. ' Body of magic packet contains 16 times the MAC address.
    61. Dim c As Integer
    62. For c = 1 To 16
    63. Dim j As Integer
    64. For j = 0 To 5
    65. WakeUpPacketBuild(mac, packet, c, j)
    66. Next j
    67. j = 0
    68. Next c
    69. ' Submit WOL packet.
    70. SubmitWOLPacket(client, packet)
    71. End Sub
    72. End Class





    jetzt habe ich das problem das wenn ich das paket so los schicke :




    VB.NET-Quellcode

    1. client.Connect(IPAddress.Broadcast, 40000)
    geht es ohne probleme aber so :

    VB.NET-Quellcode

    1. Dim newip1 As String
    2. Dim Addresslist1() As IPAddress = Dns.Resolve(Form1.dyndns.Text).AddressList
    3. Dim IPs1 As IPAddress
    4. For Each IPs1 In Addresslist1
    5. newip1 = (IPs1.ToString)
    6. Next IPs1
    7. client.Connect(newip1, 40000)



    funktioniert es einfach nicht, obwohl auf meinem rechner KEIN firewall aktiv ist und auch ein exposed host auf meinen rechner ist, allso alle ports auf den rechner sind offen und weitergeleitet.....
    edit: rofl ^^ wenn er aus ist ist keine firewall an :D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „sarasa“ ()

    edit: rofl ^^ wenn er aus ist ist keine firewall an :D
    Gehts jetzt?

    Du hättest die Klasse nicht reinkopieren müssen - ein Link oder eine kleine Info hätte vorerst mal gereicht.
    Geht nur darum, dass du kein Wort darüber verloren hast und ich mich gewundert hab, wo das herkommt :-\