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))
..........
不知道是什么地方不对,谁帮我修改一下,或者告诉我怎么实现。谢谢 ,没什么分了,把仅有的贡献上了
展开
 我来答
pivotstar
2014-04-16 · TA获得超过471个赞
知道小有建树答主
回答量:444
采纳率:33%
帮助的人:503万
展开全部
接收是被动的,有完整bytesTotal As 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左右,下载方检查数量不对就可以重新请求“下载段”,这就是续传的功能设计。
SQL的艺术
2014-04-16 · SQL写多了就会在追求极致
SQL的艺术
采纳数:2040 获赞数:3324

向TA提问 私信TA
展开全部
私信留下你Q,我帮你解决
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式