VB中Winsock控件及其数组概述

来源 :考试周刊 | 被引量 : 0次 | 上传用户:kpdavid
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要: 本文介绍利用WinSock控件及控件数组建立连接,并讨论怎样实现客户机/服务器模式下一个服务端同时为多个客户端提供WinSock连接。
  关键词: VB WinSock控件 数组
  
  随着计算机局域网的不断发展、普及,网络版软件也越来越体现出了网络时代的优点与其先进性。往往此类软件都会有一个服务端,由服务端控制着若干客户端的运行。一般来说,服务端和客户端之间都要进行大量的信息传送,而其中很多就是使用WinSock控件。
  
  一、WinSock控件的基础知识
  
  WinSock控件对用户来说是不可见的,它提供了访问TCP和UDP网络服务的方便途径。使用WinSock编写网络应用程序,不必了解网络协议的细节或调用低级的WinSock API,通过对WinSock控件的属性设置和方法调用就可以轻易实现计算机之间的连接,并且还可以实现双向交换数据。
  1.常用属性
  LocalPort:本地通信程序(WinSock)的端口号。
  RemoteHost:远程机器名,机器名也可以是IP地址。
  RemoteHostIP:远程机器IP地址。RemoteHost和RemoteHostIP属性只设置其中之一。
  RemotePort:远程通信程序(WinSock)端口号。
  Protocol:使用协议。可选的协议是TCP和UDP,对应的VB的常量分别是sck、TCP、Protocol和sck、UDP、Protocol,Winsock控件默认协议是TCP。
  2.常用方法
  Accept:接受一个连接请求。格式:对象.accept requestID。
  Bind:多协议接口下,把接口卡、IP地址捆绑在一起。格式:对象.Bind端口号,IP。
  Close:关闭连接。格式:对象.Close。
  Connect:发送连接请求。格式:对象.Connect(IP,远程端口)。
  GetData:取出数据后清除数据缓冲区。格式:对象.Getdata变量。
  PeekData:取出数据后,但不清除数据缓冲区。格式:对象.Peekdata变量。
  Listen:进入监听状态,以便及时对连接请求进行响应。格式:对象.Listen。
  SendData:发送数据。格式:对象.SendData data。
  3.常用事件
  Close:远程设备关闭连接时触发事件。
  Connect:建立连接,进行通信时触发。
  ConnectionRequest:有连接请求时触发。
  DataArrival:有数据到达时触发。
  
  二、WinSock控件应用方法
  
  1.WinSock连接过程
  网络应用软件中,必须有服务端和客户端。服务端能够接受客户端的连接请求,而连接必须由客户端发起。具体过程如下。
  准备工作:
  服务端:设置WinSock端口号(LocalPort),使用协议(Protocol),如果机器中有两块以上的网卡,则需要进行端口绑定(Bind),使用Listen方法进入监听状态,等待响应客户端的连接请求。
  客户端:设置WinSock远程计算机名或IP地址(RemoteHost或RemoteHostIP),设置远程计算机端口号(此处要和服务端端口号一致),使用协议(Protocol)。
  连接过程:
  第一步,由客户端使用Connect方法请求建立连接。
  第二步,服务端接收到连接请求,触发ConnectionRequest事件,同时得到一个requestID参数。
  第三步,服务端使用Accept方法建立连接,该方法必须用到上一步得到的requestID参数,Listen状态自动结束。
  第四步,连接建立后,客户端会触发Connect事件(如果设置响应的话)。
  第五步,双方可以进行双向数据传输,使用SendData方法发送数据,接收方接收到数据后,会触发DataArrival事件,使用GetData或PeerData方法接收数据。
  第六步,任意一方发出结束请求(Close)或直接关闭,对方触发Close事件(如果设置相应的话)。
  以上就是一个WinSock连接实施的全过程,适应于一个服务端对应一个客户端的情况。但是实际应用中,往往是一个服务端可能要同时和多个客户端连接,而所有的客户端设置的远程端口号是相同的。从上面的连接过程可以看出,当服务端响应某个客户端的连接请求后,服务端的监听状态随即结束,客户端的连接请求也不会再被响应,也就是说,服务端不能够同时和多个客户端连接。为了使得服务端能够同时和多个客户端同时连接,我们往往在服务端采用WinSock控件数组来进行连接。
  2.WinSock控件数组的应用
  应用WinSock控件数组,能够轻松实现一个服务端对应多个客户端的连接请求,从而实现一对多的网络版应用程序。其原理如下:
  将WinSock控件的Index属性设置为0,使之成为一个控件数组,再设置端口号等参数,用Listen方法使WinSock(0)控件进入监听状态。有客户端请求连接时,WinSock(0)会触发ConnectionRequest事件,此时,不使用WinSock(0)响应连接请求,而是装入一个WinSock(i)控件,由WinSock(i)调用Accept方法建立连接。建立连接时,只需要在Accept后面注明从WinSock(0)的ConnectionRequest事件中得来的requestID参数,即可实现WinSock(i)和客户端的连接。由于连接时未使用WinSock(0),所以其监听状态并未改变,还可以响应其它客户端发出的连接请求。
  
  参考文献:
  [1]李立宗.VB程序设计教程[M].南开大学出版社,2009.2.
  [2]Andrew S.Tanenbaum.计算机网络(第4版)[M].清华大学出版社,2004.8.
  [3]袁帅等.Visual Basic编程实例教程[M].北京希望电子出版社,2002.11.
其他文献
初三语文复习对于学生来说非常关键,对于课本上一些语言基础知识的复习很容易开展,但是对于阅读和写作的复习一直以来都是初三语文复习的难点.近年来随着新课程改革的不断深
农民小学数学的教学环境对学生本身来说有着重要的影响,所以教师要积极从多元化角度对小学数学课堂的整体环境和教学方式手段进行调整,为学生打造出一个良好的学习氛围,让其
1.实心球的项目特点    实心球是一项以力量为基础,以动作速度为核心的投掷项目。力量是指蹬腿力量、腰腹力量与手臂力量;动作速度细分则包括蹬腿速度、顶髋速度与最后的出手速度。  1.1四个关键词。  1.1.1原地:指掷球前的身体状态。两脚前后站立,相距50—80厘米,以一脚为轴心,身体重心可以大幅度移动,易于加快出手速度和控制身体平衡。  1.1.2双手:表明双手持球,出手时双手同时将力作用于球
不少体育课玩得多、学得少;追求乐趣多、实际教学效果少。我认为在体育课堂教学中,教师应该加强运动技能教学,通过适当的锻炼方式,发展学生的体能。    1.加强运动技能教学,发展学生体能的重要性    有些地方由于片面追求升学率,出现重智育、轻体育的现象,使学生的课业负担过重,休息和锻炼时间明显不足,导致学生体能素质持续下降,影响学生的全面发展。既要让学生有效地掌握一些有用的运动技能,又要让学生的体能
鉴赏教学作为高中音乐教学中的重要内容之一,不但能够增强学生的审美意识,还可以使学生的文化素养得到进一步提升.因此,高中音乐教师应重视鉴赏课的有效开展,积极创新音乐鉴
在我国,英语学科的教学长期被工具论深深影响着.对于传统的英语教学,人们往往看到的只是功利的得失而没有看到精神的高度升华;只看到了学习到的知识而没有看到人们对于未知领
创造性思维是指在已有知识经验的基础上,经过独立分析,综合形成新联系,从而解决问题的一种思维过程。传统体育教学效果往往是“学生围着老师转,离开老师啥也不会干”,他们思维表现更多的是记忆显现性思维。培养出来的学生思想僵化,缺乏创造力,已不能符合时代对人才的要求。    一、发挥体育优势,开发学生的右脑潜力    人的创造力与认知风格有着十分密切的关系,倾向于分析性和逻辑性的称为“左脑功能”性认知,而倾
把以学生为中心,注重学习过程和合作学习的项目式学习模式融入高职高专英语写作教学,能有效缓解学生对英语写作的焦虑,提高写作的兴趣,丰富写作体验,从而提高习作的质量和学
计算机技术的发展使得计算机知识的普及成为了必要,各高校相继开设了计算机基础课程,使得非专业类的计算机教学得到了蓬勃发展。如何有效促进计算机教学?本文就此进行了一些
体育课关注的不仅仅是增强学生的体质,还有改善学生的心理健康和社会适应能力。可是,我们往往只注重学生对运动技能的掌握,忽视了学生个性发展,抹杀了学生的创造能力,不利于学生的全面、健康发展。21世纪是追求“个性”的时代,而现代家庭以独生子女居多,其个性发展受许多复杂因素的影响,所以体育教师要从教学和学生人格发展的角度去分析,寻找其共性特点。随着新课程标准的实施,教师切实改进教学内容和教学方法,关注学生