vb中怎么实现winsock间隔一段时间接收数据
要实现winsock每间隔1s接收数据,然后将数据对比进行处理,:例如:数据发生变化会弹出窗口提示等等目前大致清楚使用定时器,不过自己写出来的程序总是报错。'Privat...
要实现winsock每间隔1s接收数据,然后将数据对比进行处理,:例如:数据发生变化会弹出窗口提示等等
目前大致清楚使用定时器,不过自己写出来的程序总是报错。
'Private Sub Timer2_Timer()
' Winsock1.GetData bytRecVal, vbByte
' bytRecVal1 = bytRecVal
' Timer2.Enabled = False
'End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
.........
' Timer2.Enabled = True
' Call Timer2_Timer
' temp1 = Chr(bytRecVal1(4))
' Timer2.Enabled = True
' Call Timer2_Timer
' temp2 = Chr(bytRecVal1(4))
..........
不知道是什么地方不对,谁帮我修改一下,或者告诉我怎么实现。谢谢 ,没什么分了,把仅有的贡献上了 展开
目前大致清楚使用定时器,不过自己写出来的程序总是报错。
'Private Sub Timer2_Timer()
' Winsock1.GetData bytRecVal, vbByte
' bytRecVal1 = bytRecVal
' Timer2.Enabled = False
'End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
.........
' Timer2.Enabled = True
' Call Timer2_Timer
' temp1 = Chr(bytRecVal1(4))
' Timer2.Enabled = True
' Call Timer2_Timer
' temp2 = Chr(bytRecVal1(4))
..........
不知道是什么地方不对,谁帮我修改一下,或者告诉我怎么实现。谢谢 ,没什么分了,把仅有的贡献上了 展开
展开全部
接收是被动的,有完整bytesTotal As Long数据接收于缓冲区之后,才会产生事件。
使用 Winsock1.BytesReceived可以预先检查缓冲区已经存在的部分Bytes(返回值Long)
使用 Winsock1.BytesReceived可以预先检查缓冲区已经存在的部分Bytes(返回值Long)
追问
你的意思是在DataArrival之前先检查bytRecVal()?
追答
bytRecVal(),bytRecVal1, 是你自定义的名称。
我写的 BytesReceived (返回值Long)是Winsock控件的标准函数名称。
接收数据是被动的,如果连线的对方没有主动的传送数据给你,你去检查也是让CPU多忙而已。
比如当从服务器下载一个300MB的文件,客户端经过请求通过后,即可以开始使用
Dim GetBytes as Long
GetBytes = Winsock1.BytesReceived
把GetBytes值转换到下载的进度条。
缓冲区全部接收完成300MB才会开始运行Winsock1.GetData bytRecVal, vbByte 这一行。中途出问题就必须重新再传一次,所以下载文件时跟对方每次约定只传4K左右,下载方检查数量不对就可以重新请求“下载段”,这就是续传的功能设计。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |