VB的Winsock控件,为什么不能接收完所有数据呢?明明发送了56个字节的数据,可只接收了6个字节?拜求高手
PrivateSubscktcpclient_dataArrival(ByValbytestotalAsLong)Dimstrmydata()AsByte'采用字节接受十...
Private Sub scktcpclient_dataArrival(ByVal bytestotal As Long)
Dim strmydata() As Byte '采用字节接受十六进制数据
Dim strlen As Long '定义字符串长度
Dim i As Long
scktcpclient.GetData strmydata, vbByte
strlen = UBound(data)
For i = 0 To strlen
Text1.Text = Text1.Text & " " & Hex(data(i)) & "H"
Next i
Text3 = bytestotal
End Sub
运行结果:
Text1显示: ECH 3H 8H 0H 0H 34H
Text3显示:56 展开
Dim strmydata() As Byte '采用字节接受十六进制数据
Dim strlen As Long '定义字符串长度
Dim i As Long
scktcpclient.GetData strmydata, vbByte
strlen = UBound(data)
For i = 0 To strlen
Text1.Text = Text1.Text & " " & Hex(data(i)) & "H"
Next i
Text3 = bytestotal
End Sub
运行结果:
Text1显示: ECH 3H 8H 0H 0H 34H
Text3显示:56 展开
2个回答
展开全部
直接用 bytestotal做for循环的终点,别用 strlen了
楼主的vbbyte位置没错,那个位置不是接收长度,而是接收类型。如果是2进制数据的话,得改用byte型,这里不用写,因为它默认就是 vbarray + vbbyte 型
楼主的vbbyte位置没错,那个位置不是接收长度,而是接收类型。如果是2进制数据的话,得改用byte型,这里不用写,因为它默认就是 vbarray + vbbyte 型
更多追问追答
追问
用strlen = UBound(data),计算接收数据长度,为什么不对呢!
追答
你在 scktcpclient.GetData strmydata 后,debug一下 data,或者 lenb(data)。
你的数据长度程序已经帮你算好了,就是 bytestotal。光看字面意思也能够理解
刚才老眼昏花了,以为你用的是vbstring,这样写就没错,不过这里的vbbyte可以省略掉。
展开全部
Private Sub scktcpclient_dataArrival(ByVal bytestotal As Long)
Dim data() As Byte '采用字节接受十六进制数据
Dim i As Long
scktcpclient.GetData data
For i = 0 To UBound(data)
Text1.Text = Text1.Text & " " & Hex(data(i)) & "H"
Next i
Text3 = bytestotal
End Sub
Dim data() As Byte '采用字节接受十六进制数据
Dim i As Long
scktcpclient.GetData data
For i = 0 To UBound(data)
Text1.Text = Text1.Text & " " & Hex(data(i)) & "H"
Next i
Text3 = bytestotal
End Sub
追问
你说这个这个我试过,不行!scktcpclient.GetData 参数;是表示接收的类型!写不写关系不大!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询