谁能找出错误???
Private Sub InitUDPSOCK()
With Winsock1
.Protocol = sckUDPProtocol
.RemoteHost = "255.255.255.255" '或者使用局域网段如"192.168.XXX..255"
.RemotePort = 7010
.Bind 7010
End With
End Sub
Private Sub UDPSenddata(MAC As String)
Dim i As Integer
Dim p As Integer
Dim B() As Byte
Dim DataBuff() As Byte
ReDim B(0 To 5) As Byte
ReDim DataBuff(0 To 101) As Byte
'这部分是举例的MAC码00-11-11-1C-D9-50
B(0) = Val("&h" & (Mid(MAC, 1, 2))) '&H0
B(1) = Val("&h" & (Mid(MAC, 4, 2))) '&H11
B(2) = Val("&h" & (Mid(MAC, 7, 2))) '&H11
B(3) = Val("&h" & (Mid(MAC, 10, 2))) '&H1C
B(4) = Val("&h" & (Mid(MAC, 13, 2))) '&HD9
B(5) = Val("&h" & (Mid(MAC, 16, 2))) '&H50
'这是起始的6字节FF
For i = 0 To 5
DataBuff(i) = &HFF
Next i
'16个6字节的MAC码
'这部分也可以用API的CopyMemory 来写
For p = 1 To 16
For i = 0 To 5
DataBuff(p * 6 + i) = B(i)
Next i
Next p
'输出显示发送码(调试时使用)
For i = 0 To 101
If Len(Hex(DataBuff(i))) = 1 Then
StrA$ = StrA$ & "0" & Hex(DataBuff(i)) & " "
Else
StrA$ = StrA$ & Hex(DataBuff(i)) & " "
End If
Next i
Debug.Print StrA$
Winsock1.SendData DataBuff '提示不支持地址族!
End Sub
Private Sub Command1_Click()
Call UDPSenddata("00-11-11-1C-D9-50") 'MAC
End Sub
[解决办法]
没调用 InitUDPSOCK() ?
[解决办法]
UDP 广播时,Bind 用的 LocalPort 和 RemotePort 不能一样。
[解决办法]
加上这个就OK
Private Sub Form_Load()
InitUDPSOCK
End Sub