龙珠激斗阵容搭配:Winsock控件基础(VB6.0)

来源:百度文库 编辑:九乡新闻网 时间:2024/04/30 13:02:03

1. Winsock控件基础

Winsock控件在程序设计时,看不到这个控件显现在执行的窗体之中,但是它可以提供有关网络通讯方面的程序设计依据。此外,在这个控件的使用上,您可以非常容易地要求控件为您调用TCP或是UDP网络服务的功能。因此,当您在编写有关住从式架构的应用程序时,您可以不需要了解TCP通讯协议或是低级的Winsock api调用方式。

通常,以笔者的经验,除了必须与标准通讯协议进行互动外,仅仅是进行一般性相互通讯、交换数据时,Winsock控件可以满足您的要求。因此您可以非常容易地通过属性的设置以及控制方法的调用,与远程的设备进行连接并且相互交换信息。关于这些应用方面以及调用方式,笔者将在接下的探索中,慢慢地研究Winsock的应用方式。

1-1TCP基础

不论是在Internet或是Internet网络之中,以目前流行的趋势,多半都会使用TCP协议来进行远程设备的连接。TCP协议的全名为“传输控制协议(transfer control protocol)”,这是一种在Internet上使用的 主要协议,例如http,ftp,smtp等,都是属于这个中面向连接的协议。因此,当您 使用TCP协议连接两个网络上的设备时,将可以在它们之间交换希望交换的数据。

同时,如果您开发的应用程序属于主从式应用架构(或是n-tear(多层次))应用系统时,将必须要知道应用系统主机的ip地址(利用RemoteHost属于取得)以及连接端口号(利用remoteport属于取得)。在这些数据完全备齐之后,您才可以进行进一步的调用、连接。

因此,如果正在建立主机端应用程序时,必须指定本机,必须指定本机(执行应用程序所在的计算机)所用的连接端口号(localport属于),接着将Winsock控件设置为“监听(listen)”,即可等候远程客户端进行调用与连接。因此,当主机端接收到客户端调用并且要求连接的信息时,将会触发“要求连接()”的事件,接着进行标准“允许”或是“拒绝”的程序。

一旦主机端与客户端连接完成之后,您将可以开始使用“传送数据(senddata)”方法,将数据传送给对方,并且利用“传送完成(sendcomplete)”事件,来检测数据是否传送完毕。同时,在数据传达对方的计算机时,将会触发对方计算的“接收数据(dataarrival)”事件。此时,您可以使用“取得数据(getdata)”方法,来去出这些接收到的数据。

上述的程序将周而复始地发生,直到发生“中断连接(closed)”事件或是不正常断线为止。这种连接与数据传输的方式,则是属于Winsock控件TCP协议的运行特色。图1-1所示为使用TCP连接的运行模式。

 

1-2 UDP基础

相对于TCP面向连接的协议则是属于UDP非面向连接协议,UDP协议的全名是“用户数据报协议(user datagram protocol)”,其运行方式明显与TCP协议有所不同。一般来说,使用UDP协议并没有所谓的主机端或是客户端的限制,您可以依据需求任意对调用主机端与客户端的角色。

因此,在数据传输之前,您必须要先设置好本机端所使用的连接端口(localport属于所指定的)。因此,在本机上必须设置远方主机的ip地址(RemoteHost属性所指定的)以及连接端口号(remoteport),并且使用这个属性的内容与远程设备进行连接。相对的,远程主机的本机连接端口则为调用端的远程连接端口号,而远程主机的“远程主机ip地址(RemoteHost属性)”则为调用端的本机ip地址。

为了让您可以对UDP协议有更清楚的了解,请参照下面的图:

 

在完成连接之后,即可通过连接到远程的连接端口,使用senddata方法,将数据传送到远程的主机上。远程的主机一旦接收到数据,将会立即触发dataarrival事件,此时您可以使用getdata方法,来取得远程所传送的数据。 上面阐述了有关TCP和UDP的一些连接原理,至于Winsock的属性、方法、事件在此不做介绍有关资料都有详细的说明。