2024年4月19日发(作者:)

基于VB6.0的Winsock控件的远程数据传输的方法

【摘 要】在Visual Basic 6.0 环境下,利用Winsock控件实现与远程数据采集端连

接和数据传输。与传统数据传输方法进行比较,该方法简单且易于实现,并充分利用了网

络资源。介绍了Winsock控件,结合示例程序,说明了该方法实现流程。最后通过实验,

证实该方法进行远程数据传输的可靠性。

【关键词】数据传输;协议;VB6.0;Winsock控件

在远程数据采集和传输系统中,传统的方法有2 种:一是采用RS-485进行远程控制;

二是通过调制解调器进入电话线来实现远程控制,然而这2 种方法都有自己的缺点。这样

一来就限制了它们的应用范围。

本文介绍了在VB6.0中利用Winsock控件来实现服务器端与远程客户端建立连接并

进行数据传输的方法。

一、基于Winsock控件的远程数据传输

(一) Winsock控件简介

Microsoft提供的Winsock控件,是ActiveX控件的一种。在VB中可以将其添加到

工具箱中以便使用。在程序运行时,Winsock控件是不可见的,但通过对其属性、方法、

事件的设置及应用可轻松地实现计算机间的远程连接,该控件为用户提供了访问TCP和

UDP网络及其方便的途径,不需要了解低级Winsock API调用实现的细节。VB的Winsock

控件内部几乎封装了所有的Internet协议,以类的形式提供了属性、方法、事件,使得程

序得到了极大的简化。

Winsock控件的常用属性如表1。

(二)传输协议

在使用Winsock控件时,首先要考虑使用什么通信协议。可供选择的协议有传输控制

协议(TCP)和用户数据报协议(UDP),都是位于传输层的协议、使用端口号来识别应用程序,

区别在于连接的状态。TCP协议是一个基于连接的协议,在收发数据前必须建立连接,并

且该连接可靠性强,使数据无差错地传输,适合有确认信息的、重要的、数据量大(如声音

和图像)的文件。UDP协议是不与对方建立连接而是直接就把数据报发送过去。传输速度

较快也较便宜,适用于少量数据传送、可靠性要求不高的文件传输。本文中均选用TCP协

议。

(三)远程数据传输系统软件设计

1、远程传输系统软件流程

软件在Visual Basic环境下开发,利用Winsock控件完成客户端与服务器端的相互通

讯。

创建客户端程序时,必须知道服务器端的IP地址(RemoteHost属性)和服务器“侦听”

的端口(RemotePort 属性)然后调用 Connect 方法请求与服务器连接。

创建服务器端程序时,必须设置一个收听端口(LocalPort属性)并调用Listen方法侦

听端口,本论文中使用的IP地址为202.205.84.222,使用的端口号为2020。当客户端请

求连接时就会发生ConnectionRequest事件。为了完成连接,可调用ConnectionRequest

事件内的Accept方法与客户端进行连接。

连接建立后,双方就可以相互收发数据。通过调用 SendData方法完成数据发送。接

收数据时会触发DataArrival事件,调用DataArrival事件内的 GetData方法获取数据。

2、服务器端程序设计

(1)服务器端窗体加载事件

利用Private Sub Form_Load()加载,并且设置本地端口,打开侦听,获取并显示本

地状态信息。

(2)与客户端的连接

客户端发出连接请求时,触发ConnectionRequest事件,并调用Accept方法完成连

接。如果本地有连接,则断开,因为不能同时接受两组数据。

(3)建立连接

利用 requestID接收当前连接,并显示远程计算机名、客户端IP及远

程端口名称等远程状态信息。

(4) 接收数据

当客户端发送的数据到达时,触发DataArrival事件,并调用GetData方法获取数据。

(5)确认信息

当客户端数据发送完毕,触发SendComplete事件,服务器端会将发送的内容回发作

为接收到数据的确认信息。

1、客户端程序设计

(1)客户端窗体加载事件

利用Private Sub Form_Load()加载,并且指定欲建立连接的服务器IP及端口名称,

并随时侦测连接是否成功。

(2)客户端向服务器端发送连接请求

利用Private Sub sockcl_Connect()进行侦测,一旦成功连接,便向服务器发送客户

端数据。

(3)服务器接收客户端发送的数据

当客户端端发送的数据到达时,触发DataArrival事件,并调用GetData方法获取数

据。

(4)确认信息

二、实验结果及分析

(一)实验环境描述

实验中的客户端是远程数据采集系统,利用单片机作为主控制芯片,利用各种传感器

采集现场数据,通过A/D转换送到单片机中。单片机通过串口与GPRS模块连接,实现与

移动网的连接,再与Internet连接。

(二)实验结果及分析

实验只采用8路差分模拟输入的3路――AI 6、AI 7、AI 8,因为存在干扰,固前5路

的数值还有一些误差。显示的数值不表示实际温度、湿度值,需经过转换,转换后与实际

测量值进行比较,证实该方法传输数据的可靠性。程序和整个系统均有待改进。

三、结束语

Winsock是编制各种C/S程序的利器,不仅很好地解决了分散的温度、湿度远程数据

采集系统,并能有效可靠地进行传输,还能开发聊天程序、抢答系统[9]等。算法具有简单

性,且易实现。

参考文献:

[1]叶纪听.基于VB编程实现网络文件数据传递的实现[J]. 电脑知识与技术,2014,22:

5235-5239.

[2]陈萍,高腾,刘兆峰,高雪为,詹鹏飞.基于GPRS的热力管网监测软件设计[J].山

东建筑大学学报,2011,04:403-406+410.

[3]曹淑华. VB编程实现微机的网络远程唤醒[J].现代电子技术,2010,14:61-63.

[4]陈立定,冯景辉,胥布工.远程环境在线监测系统的设计[J].同济大学学报(自然科学

版),2010,11:1659-1663.