VB教程中关于Winsock控件的网络数据通讯教学探讨

2022-09-10

进程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行, 为保证两个相互通信的进程之间既互不干扰又协调一致工作, 操作系统为进程通信提供了相应设施, 如UNIX BSD中的管道 (pipe) 、命名管道 (named pipe) 和软中断信号 (signal) 、UNIX system V的消息 (message) 、共享存储区 (shared memory) 和信号量 (semaphore) 等, 但都仅限于用在本机进程之间通信。随着科技的进步, 计算机的应用越来越广泛, 计算机系统从当初的单机时代发展到现在的网络时代, 各个应用系统之间、应用系统内部都需要一个协调过程, 这就需要各进程进行相互的通信。以便实现网络之间批量数据的实时传输需求。VB中的Winsock控件恰到好处的解决了这一问题, 它提供了访问TCP和UDP网络服务非常简便的途径。

1 VB中的Winsock控件

Visual Basic (VB) 是Windows环境下简单、易学、高效的一种编程语言, 尤其是其可视性、面向对象、较强的网络通讯功能等特点使其成为首选的软件开发工具。系统提供的Winsock控件, 提供了访问TCP和UDP的网络服务, 用于支持网络中两台以上计算机之间的相互通信, 通过UDP协议 (用户数据报协议) 或TCP协议 (数据传输协议) 连接到远程的机器并进行数据交换。该控件封装了繁琐的技术细节, 只需通过设置控件的属性和调用该控件的方法即可方便地连接到一台远程机器上进行双向数据交换。

1.1 Winsock控件应用协议

Winsock控件主要是应用TCP和UDP协议。TCP是传输控制协议, 它提供了一种可靠的、面向会话连接的数据流服务, 协议通信时, 建立并控制数据发送方与接收方的会话关系。UDP用户报文协议是一个无连接协议, 可以迅速地展开通信, 一般用于传输少量不重要的数据和信息。Winsock控件的UDP通信方式是一种广播方式。

简单的说, TCP协议控件是一个基于连接的协议, 就像电话机一样, 用户必须在通话之前建立连接;UDP是一个无连接的协议, 两台计算机之间的事务处理就像传纸条一样:一台计算机向另一台计算机发送消息, 但是它们之间并没有一个明确的连接路径。

1.2 Winsock控件应用属性

Winsock控件在数据的远程交换过程中主要利用以下几个重要属性。

(1) Index:标识控件数组中唯一的一个对象。 (2) Localport:返回或设置所用到的本地端口对客户, 该属性指定发送数据的本地端口。对于服务器, 这是用于监听的本地端口。 (3) Remotehost:返回或设置远程计算机, 控件向其发送数据或从其接收数据。 (4) Remoteport:返回或设置要连接的远程端口号。

1.3 Winsock控件应用方法

Winsock控件在数据的远程交换过程中应用以下重要方法: (1) Accept:在处理ConnectionRequest事件时使用该方法接受新连接请求; (2) Bind:指定用于TCP连接的LocalPort和LocalIp, 且在调用Listen方法之前必须调用Binde方法; (3) GetData:获取当前的数据块并将其保存在一个Variant类型的变量中; (4) Listen:创建套接字并将其设置为监听模式; (5) SendData:发送数据到远程计算机。

1.4 典型的T C P协议双向通讯的过程

使用TCP协议通信时, TCP建立并控制数据发送方与接收方的会话关系, 当接收方正确收到数据后, 必须向发送方发送确认信息。如果发送方在指定时间内未能收到确认信息, 将重发数据包, 一般包括如下步骤: (1) 获得对方的IP地址和端口号; (2) 在本地主机上选择一个IP地址和端口; (3) 在通讯双方之间建立socket连接; (4) 传输数据; (5) 传输完毕后断开连接。

2 Winsock控件网间数据通讯实现方案

(1) 服务器程序必须设置好LocalPort属性, 作为侦听端口, 该值为一个整数 (只要是一个其它TCP/IP应用程序没有使用过的值即可) 。例如:Winsock1.Local Port=local_port (local_port为端口变量) 。 (2) 使用Listen方法进入侦听状态, 等待客户机程序的连接请求。

Winsock1.Bind local_port

Winsock1.Listen

(3) 客户机程序发出连接请求, 使服务器程序产生ConnectionRequest事件, 该事件得到一个参数requestID。 (4) 服务器程序用Accept方法接受客户机程序的requestID请求。这样, 服务器程序就可以用SendData方法发送数据了。Accept方法必须用上一步得到的requestID作为其参数。

在Winsock1的ConnectionRequest事件中, 调用另外一个Winsock2控件去accept这个requestID, 主要是让Winsock2去与对方发生真正的通讯, Winsock1控件需要继续它的侦听工作, 只有这样, 另外的客户端才可以继续socket的连接, 这样可以起到一个服务端对多个客户端的服务。

(5) 当服务器程序接收到数据时, 产生DataArrival事件, 参数BytesTotal包含接收到的数据字节数。在该事件中, 可以用GetData方法接收数据。

(6) 如果接受到Close事件, 则用Close方法关闭TCP/IP连接。

3 结语

本文通过对VB中的WinSock控件特性与功能应用分析, 给出了基于该控件的实现数据传输与通讯的具体实现方案。利用此方法, 可以方便的解决网间数据传送提高开发效率, 具有广泛的适用性和实用价值。

摘要:网间数据通信要解决的是不同主机进程间的相互通信问题。在这个过程中, 一方是作为服务端模式;另一方是作为客户端模式去访问服务端。本文就如何利用VB中的WinSock控件的数据通讯功能, 建立远程计算机连接并进行双向数据交换提供可靠实现方案。

关键词:端口,地址,Winsock控件,进程

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

上一篇:安全阀校验过程中的风险识别与管控思路分析下一篇:浅谈艺术设计可以公式化的可行性条件研究

热门文章

教程设计

精品范文