首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

哪位高手能找出异常?

2012-01-19 
谁能找出错误???Private Sub InitUDPSOCK()With Winsock1.Protocol sckUDPProtocol.RemoteHost 255.2

谁能找出错误???

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

热点排行