【问题标题】:Can send normal UDP packet with VB.net - But how do you send a WOL packet?可以使用 VB.net 发送普通的 UDP 数据包 - 但是如何发送 WOL 数据包?
【发布时间】:2015-12-22 16:01:38
【问题描述】:

我可以用这个发送一个数据包:

Public Class Form1
Dim publisher As New Sockets.UdpClient(0)
Dim subscriber As New Sockets.UdpClient(2000)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    publisher.Connect(TBTo.Text, TBPort.Text)
    Dim sendbytes() As Byte = ASCII.GetBytes("test")
    publisher.Send(sendbytes, sendbytes.Length)
End Sub
End Class

效果很好,使用 WireShark 我可以在端口 9 上看到一个 UDP 数据包被发送到我的 IP(我在地址/单词框中输入)。

我了解 WOL(我确实有工作,只是想制作我自己的应用程序以获得乐趣/体验)你需要一个 MAC,它只是“添加一个 MAC”地址使它成为一个 WOL 数据包还是它比这更复杂?

注意: 我可以在 Wireshark 中看到 WOL 和 UDP 数据包的差异,并将我的 IP 更改为“MYIP”。例如下面是从 WOL 应用程序发送的 WOL 数据包。

40.000203000 MYIP 192.168.1.1 WOL 144 MagicPacket for Micro-St_21:94:b6 (44:8a:5b:21:94:b6)

与普通的 UDP 数据包相比:

69 12170.303276000 192.168.1.1 MYIP UDP 46 Source port: 57465 Destination port: 9

编辑: 我用一些例子玩了很多,但它们不是最好的。

【问题讨论】:

    标签: vb.net network-programming udp wake-on-lan


    【解决方案1】:

    几个小时后,我设法做到了。如果其他人被卡住了,我就是这样做的:

    Public Class Form1
    
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim MacAddress As String = "YOUR MAC ADDRESS HERE"
        Dim myAddress As String = "YOURIP HERE"
        Dim udpClient As New System.Net.Sockets.UdpClient
    
        Dim buf(101) As Char
    
        Dim sendBytes As [Byte]() = System.Text.Encoding.ASCII.GetBytes(buf)
    
        For x As Integer = 0 To 5
    
            sendBytes(x) = CByte("&HFF")
    
        Next
    
        Dim i As Integer = 6
    
        For x As Integer = 1 To 16
    
            sendBytes(i) = CByte("&H" + MacAddress.Substring(0, 2))
    
            sendBytes(i + 1) = CByte("&H" + MacAddress.Substring(2, 2))
    
            sendBytes(i + 2) = CByte("&H" + MacAddress.Substring(4, 2))
    
            sendBytes(i + 3) = CByte("&H" + MacAddress.Substring(6, 2))
    
            sendBytes(i + 4) = CByte("&H" + MacAddress.Substring(8, 2))
    
            sendBytes(i + 5) = CByte("&H" + MacAddress.Substring(10, 2))
    
            i += 6
    
        Next
    
        udpClient.Send(sendBytes, sendBytes.Length, myAddress, 9)
    End Sub
    End Class
    

    就是这样。然后您所做的就是更改您的 IP 和 MAC 以满足您的需要。或者,如果需要,您可以为不同的输入添加文本框。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多