VB网络通信中多帧数据接收的简易方法

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:asdf8865
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:简要介绍了VB网络通信中收发数据的原理及方式,给出了UDP协议下通信的源代码,通过在校园一卡通系统中的应用实例,着重讲述了一种利用计时器控件进行接收并处理多帧数据的简易控制方法,并提供了实现方法的主要源代码。文章的最后指出了这种方法的不足之处。
  关键词:网络通信;多帧数据;计时器控件
  中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)18-20000-00
  
  The Simple Method of The Multi-frame Data Receiving In VB Network Communication
  GUO Yi,TU Jing-lu
  (Department of Information Technology,Hainan Vocational College of Political Science and Law,Haikou 571100,China)
  Abstract: The principles and methods of receieing data are introduced briefly in VB network communication, has given the source code which under the UDP protocol.Adopted in the campus card system of examples, focusing on the use of the timer controls to receive and process Multi-frame data simple control method. Finally,the article has pointed out the lack of this methods.
  Key words:Network Communication; Multi-frame Data; Timer Control
  
  1 引言
  
  随着网络技术的发展,网络应用越来越深入人们的生活,由此引发的网络设备及相应软件的开发工作也日益增
  加。我们学院的校园一卡通系统就是在这个时期应运而生的,并且随着时代的发展、学院日益扩大的应用需求而不断更新升级。在最新增加的学生宿舍网络收费功能的设计中,遇到了一个接收多帧数据的问题,现应用一种简易的方法解决,特与应用VB6.0进行网络通信设计的同仁们共享。
  
  2 VB网络通信
  
  在一卡通的脱网消费系统中,由于消费记录是暂时存在消费机中的,需要定时下载数据并清空,才不会导致因存储器没有空间而不允许刷卡的事情产生,但如果每天下载数据又会增加工作人员的工作量。由于我们所使用的消费机存储容量可达32KB,而我们一条记录只占用16B,这样我们的一台消费机中可存储2048条记录。以我院校园网规模来看,现通过校园网上网的学生在400人左右,即使只有一台消费机每人每天消费扣款,也可存储5天的数据,但这样一次传输到上位机的数据量就比较大,因此我们的消费机把数据分成多帧来上传(每一帧传输40条记录,加上帧头和帧尾共649个字节),这样便产生了本文所提出的问题——如何利用Winsock控件的DataArrival事件来接收多帧数据?
  VB5.0以上的版本都提供了Winsock控件,Winsock使用的TCP协议和UDP协议允许建立并保持一个到远程计算机上的连接,且可以在连接结束之前实时地进行数据交换。用户仅通过设置属性并借助事件处理就能够轻而易举地连接到一个远程的计算机上。
  我们的消费系统采用的是UDP协议,它是无连接的,并不保证数据传输的可靠性、有序性和无重复性,因此需要程序员负责管理数据报文的排序和可靠性,这对程序的严谨性也有了更高的要求。下面我们把在VB6.0中使用Winsock控件实现UDP协议的方法简单地描述一下,在这里上位机为本地机器,下位机(消费机)视为远程计算机。
  在程序中用到的Winsock控件的主要属性如下表所示:
  表1Winsock控件的属性
  
  由于UDP协议是无连接的,不保证接收端是否在侦听,所以使用的方法也比较少,本系统中用到的主要方法有:Bind、SendData和GetData等方法,其中Bind方法用于绑定本地端口;SendData方法用于发送数据;GetData方法一般用于DataArrival事件中,获取当前数据缓冲区中的数据并将其存储在变体类型的变量中。在程序中所用到的属性一般在窗体加载时便设置好,并使用Bind方法来绑定本地端口,代码如下:
  Dim a as Integer ‘数组下标计数器
  Dim b as Integer ‘帧计数器
  Dim revHead() as Byte ‘存放收到的所有数据的数组
  Dim intfrmcount as integer ‘总帧数
  Private Sub Form_Load()
   sckMultFrm.RemoteHost = IPadd ‘设置远程IP
  sckMultFrm.RemotePort = 5010 ‘设置远程端口
  sckMultFrm.LocalPort = 5009 ‘设置本地端口
  sckMultFrm.Bind 5009 ‘绑定本地端口
  End Sub
  通过单击命令按钮事件来发送命令,代码如下:
  Private Sub Send_Click()
  Dim bytreadRecord() As Byte
  sckMultFrm.SendData bytreadRecord ‘发送命令,其中bytreadRecord为字节型数组
  a = 0:b = 0 ‘计数器清零
  Timer1.Interval = 2000 ‘预计第一帧数据接收并处理完的时间为2S
   End Sub
  当消费机有数据上传时,将触发Winsock控件的DataArrival事件,该事件当新数据到达时发生。这里将每次收到的帧数据都保存到一个一维数组中,具体代码如下:
  Private Sub sckMultFrm_DataArrival(ByVal bytesTotal As Long)
   Dim frmrevHead As Variant
  b = b 1 ‘b用于计算帧数
  lenByte = 649 * b – 1 ‘计算接收数据的总字节数
  sckMultFrm.GetData frmrevHead ‘接收单帧数据
  ReDim Preserve revHead(0 To lenByte)‘定义动态数组存放接收到的所有数据
  For j = 0 To 648
   revHead(a) = frmrevHead(j)
   a = a 1 ‘a用于累计数据字节数,将每帧收到的变体型数组元素放到一个数组中
  Next
  End Sub
  
  3 用Timer控件实现多帧的接收
  
  由于只要数据缓冲区有数据,Winsock控件就会触发DataArrival事件,并且把接收到的数据存入一个变体型变量中,而我们的下位机每上传一帧数据的间隔时间是毫秒级的,上位机软件还来不及处理完第一帧数据,第二帧数据又来了,这样使用一个变量来接收数据就有点力不从心,而且会发生丢数据的情况,为了解决这种矛盾,我们想到了利用Timer控件来控制处理接收数据的时间。
其他文献
摘要:《电气控制和PLC》一直是自动化专业的主干课程,多年来,它的教学不能适应学生职业能力的培养,本文认为应以能力为目标,学生为主体从课程教学设计、课程实验实训设计两个方面进行改革。  关键词:PLC教学;能力目标;教学设计;任务设计  中图分类号:G642文献标识码:A文章编号:1009-3044(2008)35-2359-01  PLC技术直接应用于工业自动控制现场,更新发展速度快,实践性强,
摘要:IPv4和IPv6将在很长时间共存,IPv4到IPv6的过渡将经历很长的时期,该文讨论了IPv4向IPv6过渡期间的一些技术,并分析了其优劣及应用场景。  关键词:IPv4;IPv6;过渡  中图分类号:TP393文献标识码:A文章编号:1009-3044(2009)22-pppp-0c    IPv4是一个非常成功的协议,已经经历时间的考验,但是因特网的爆炸式发展,IPv4地址耗尽的问题迫
摘要:以计算机网络技术专业为例对五年制高职的专业建设提出见解。  关键词:五年制高职;计算机网络技术;专业建设  中图分类号:G642 文献标识码:A 文章编号:1009-3044(2013)35-8014-02  五年制高等职业技术教育(以下简称五年制高职)是指招收初中毕业生,实行五年一贯制或分段教学的高等职业教育,它将中等和高等职业教育贯通,整体设计学生的知识、能力和素质结构,统筹安排相关的课
统编本语文教材已经全面投入使用,老师们可能会面对一些问题。下面,我对于统编本教材(主要是小学四、五、六年级)的使用,特别是如何备课,提一些具体的建议。  一、厘清教材的结构框架,让教学目标更明晰  拿到新教材,第一件事可能就是看看有哪些新课文。统编本教材的新课文大概占41%,变动是比较大的,有些老师感觉比较难,于是就把主要精力花在如何准备好新课文的教学上。这可以理解,但最重要、先着手去做的,是对新
摘要:VB.NET程序设计教学是计算机专业学生的主修课,该文结合教学实践与理论探讨VB.NET程序设计教学取得良好教学效果的几点因素。  关键词:VB.NET;程序设计;教学方法  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2009)05-1273-02  Discussed the Teaching of VB.NET Programming  YUAN Shu-xi
摘要:IP欺骗是利用主机之间的正常信任关系,伪造他人的IP地址达到欺骗某些主机的目的。IP地址欺骗只适用于那些通过IP地址实现访问控制的系统。实施IP欺骗攻击就能够有效地隐藏攻击者的身份。IP地址的盗用行为侵害了网络正常用户的合法权益,并且给网络安全、网络正常运行带来了巨大的负面影响,因此研究IP地址盗用问题,找到有效的防范措施,是当前的一个紧迫课题。  关键词:IP欺骗;盗用;对策  中图分类号
摘要:电气自动化在增强生产、流通、交换、分配中扮演重要角色,不但大幅度降低了人力资资源和资金的投入,同时也有效的增强了运作的效率。随着人工智能的普及电气自动化控制领域,电气自动化的发展得到了极大的促进。  关键词:人工智能;电气自动化  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)29-6621-02  人工智能是近年来新兴起来的一种技术,其与传统方式的科学技术
摘要:论文通过分析游戏软件在学习中的积极因素,提出一套基于Robocode的Java实验教学方案。倡导通过寓教于乐,提高学生对Java语言的应用能力和创新意识。   关键词:Robocode;Java教学;实验教学  中图分类号:G642文献标识码:A文章编号:1009-3044(2009)22-0000-00    高校实验教学在培养学生基本技能、动手能力和创新思维方面具有课堂教学所不能取代的作
摘要:分析了在VRML中通过Script节点或EAI 使用Java语言来实现对虚拟世界的控制和场景交互的办法,指出了它们的不足之处。在此基础上,利用AJAX异步传输和数据处理的优势,提出一种基于AJAX的虚拟现实框架,并简要给出了应用实例说明。  关键词:虚拟现实;VRML;Java;交互;AJAX   中图分类号:TP309.05文献标识码:A 文章编号:1009-3044(2008)06-10
摘要:世界移动通信的研究热点已转向B3G,其关键技术有:OFDM技术,MIMO技术,自适应编码调制(AMC)技术等。是一组极有前途的技术。  关键词:B3G;OFDM;MIMO;AMC;空时编码系统  中图分类号:TN929文献标识码:A文章编号:1009-3044(2008)16-21212-02  After Three Generations of Mobile Communication(