背景:                 
[本书目录] [图书首页] [本书讨论区]  
链接地址:http://www.17xie.com/read-3404.html    注册17xie 一起来写书 实现您的出书梦想!

10  WebBrowserWinSock控件的应用

学习目标

本章主要介绍的是VB提供的与网络有关的2ActiveX控件:WebBrowser控件和WinSock控件。通过本章的学习,要求掌握这2个控件常用的属性、事件和方法,并通过本章的实例和项目,逐步掌握用VB编写网络程序的基本方法和技术。

实训项目

1.项目题目:一个简单的网页浏览器

2.项目要求:此程序应能浏览Internet上的网页,也可以显示本地机或局域网中的目录,应具有“后退”、“前进”、“停止”、“刷新”、“主页”、“搜索”等功能。

3.项目界面及其要求:

⑴程序启动后的界面如图10-1所示。

10-1  一个简单的网页浏览器启动界面

⑵在地址栏中输入网址,然后按下回车,或单击【Go】按钮,可以打开指定的网页。单击【后退】,可以返回到上一个页面,如果当前页面是历史记录中的第一个页面,则【后退】按钮不可用;单击【前进】,可以恢复到刚才浏览过的页面,如果当前页面是历史记录中的最后一个页面,则【前进】按钮不可用;单击【停止】,可以终止正在打开的网页;单击【刷新】,可以重新下载当前网页;单击【主页】,可以打开主页;单击【搜索】,可以按指定关键词进行搜索。

⑶标题栏上显示网页的标题,状态栏上显示网页的状态和当前时间。

10.1  WebBrowser控件

使用网页浏览器控件(WebBrowser)可以浏览Internet网上的网站,也可以浏览本地机或局域网中的目录。用户使用该控件提供的“后退”、“前进”、“停止”、“刷新”、“主页”、“搜索”等方法,可以快速便捷地创建出一个简单的、占用资源少的网页浏览器。

10.1.1  WebBrowser控件的属性

WebBrowser控件的常用属性有:

1Busy属性

格式:

Object.Busy

说明:

如果正在浏览或下载网页,返回True,否则,返回False。在较长时间内,如果控件一直处于“忙”状态,可以使用Stop方法来终止浏览器的浏览或下载操作。

2LocationName属性

格式:

Object.LocationName

说明:

如果网页浏览器包含的是网页,则返回网页的标题;如果是本地机或局域网上的目录或文件,则返回统一名称协议(Universal Naming Convention)格式的目录或文件。

3LocationURL属性

格式:

Object.LocationURL

说明:

如果网页浏览器包含的是网页,则返回网页的URL;如果是本地机或局域网上的目录或文件,则返回统一名称协议(Universal Naming Convention)格式的目录或文件。例如,如果用户现在正在浏览本地机上的C盘,则执行Me.Caption = WebBrowser1.LocationURL后,在标题栏上显示的是“file:///C:/”。

4Offline属性

格式:

Object.Offline=[True|False]

说明:

该属性返回或设置当前浏览器是否工作在脱机状态下。如果在脱机模式下(取True时),浏览器将从本地机上的临时Internet目录读出网页。默认值为False

10.1.2  WebBrowser控件的方法

WebBrowser控件的常用方法有:

1GoBack方法

格式:

Object.GoBack

功能:

返回到上次查看过的网页或目录。

说明:

浏览器控件保存有一份记载用户访问过网页的历史记录。通过CommandStateChange事件可以检测到用户是否可以按下“后退”按钮,如果事件的CSC_NAVIGATEBACK命令不可用,说明现在浏览的是历史记录中的第一条,则应该禁用此方法。

2GoForward方法

格式:

Object.GoForward

功能:

返回到单击“后退”按钮前的网页或目录。

说明:

浏览器控件保存有一份记载用户访问过网页的历史记录。通过CommandStateChange事件可以检测到用户是否可以按下“前进”按钮,如果事件的CSC_NAVIGATEFORWARD命令不可用,说明现在浏览的是历史记录中的最后一条,则应该禁用此方法。

3GoHome方法

格式:

Object.GoHome

功能:

返回到当前主页或起始页。

4GoSearch方法

格式:

Object.GoSearch

说明:

可以打开在Internet ExplorerOption对话框中所指定的页面。

5Navigate方法

格式:

Object.Navigate URL [Flags]

说明:

Navigate方法可以打开指定的网址或目录。其中,URL为指定的网址或目录,Flags为可选项,表10-1中列出了Flags的取值范围。

10-1  Flags参数的取值范围

常量

取值

   

NavOpenInNewWindow

1

在新窗口中打开网址或目录

NavNoHistory

2

不允许将打开的网址或目录添加到历史记录中,新的网址或目录替换掉历史记录中的当前页

NavNoReadFromCache

4

不允许从磁盘缓冲区读取要打开的网页

NavNoWriteToCache

8

不允许将本次浏览的结果写入磁盘缓冲区

 

6Refresh方法

格式:

Object.Refresh

说明:

Refresh方法可以重新下载当前网页。

7Stop方法

格式:

Object.Stop

说明:

Stop方法终止任何正在浏览或下载的网页。

10.1.3  WebBrowser控件的事件

WebBrowser控件的常用事件有:

1CommandStateChange事件

格式:

Private Sub object_CommandStateChange(ByVal Command As Long,ByVal Enable As Boolean)

说明:

当改变要浏览的对象时触发此事件。

参数Command的可能取值范围为:常量CSC_UPDATECOMMANDS表示浏览的对象发生了改变;CSC_NAVIGATEFORWARD表示【前进】按钮的状态发生了变化;CSC_NAVIGATEBACK表示【后退】按钮的状态发生了变化。

如果Command可用,参数EnableTrue,否则取False

2NavigateComplete2事件

格式:

Private Sub object_NavigateComplete2(ByVal pDisp As Object, URL As Variant)

说明:

当控件成功地转移到新位置后,触发此事件。

3DownloadBegin事件

格式:

Private Sub object_DownloadBegin

说明:

当下载操作开始时触发此事件。在NavigateComplete2事件发生后,紧接着触发此事件。DownloadBegin事件表示WebBrowser控件窗口显示的是正在被下载的网页,该网页在全部下载完毕后,DownloadComplete事件将被触发。

4DownloadComplete事件

格式:

Private Sub object_DownloadComplete

说明:

浏览操作完成、终止或失败时触发此事件。

5ProgressChange事件

格式:

Private Sub object_ProgressChange(ByVal Progress As Long, ByVal ProgressMax As Long)

说明:

该事件会在下载网页的过程中定时触发。参数Progress保存了当前已下载的数据总量,参数ProgressMax保存了将要下载的数据总量。

10.2  Winsock控件

Winsock控件可以将网络上的计算机连接起来,并通过用户数据报文协议(UDP)或者传输控制协议(TCP)进行数据交换。这两种协议都可以用来创建客户与服务器应用程序。

编程人员不必了解TCPUDP的细节,只需通过设置Winsock控件的属性并调用其方法就可轻易连接到一台远程机器上去,实现实时双向交换数据。

Winsock控件的主要用途是:

1.创建收集用户信息的客户端应用程序,并将收集的信息发送到某中央服务器。

2.创建一个服务器应用程序,作为多个用户的数据的汇入点。

3.创建“聊天”应用程序。

10.2.1  TCPUDP基础

1TCP基础

数据传输协议允许创建和维护与远程计算机的连接。连接两台计算机就可彼此进行数据传输。

如果创建客户应用程序,就必须知道服务器计算机名或者IP地址(RemoteHost属性),还要知道进行“侦听”的端口(RemotePort属性),然后调用Connect方法。

如果创建服务器应用程序,就应设置一个收听端口(LocalPort属性)并调用Listen方法。当客户计算机需要连接时就会发生ConnectionRequest事件。为了完成连接,可调用ConnectionRequest事件内的Accept方法。

建立连接后,任何一方计算机都可以收发数据。为了发送数据,可调用SendData方法。当接收数据时会发生DataArrival事件。调用DataArrival事件内的GetData方法就可获取数据。

2UDP基础

用户数据文报协议(UDP)是一个无连接协议。跟TCP的操作不同,计算机并不建立连接。另外UDP应用程序可以是客户机,也可以是服务器。

为了传输数据,首先要设置客户计算机的LocalPort属性。然后,服务器计算机只需将RemoteHost设置为客户计算机的Internet地址,并将RemotePort属性设置为跟客户计算机的LocalPort属性相同的端口,并调用SendData方法来着手发送信息。于是,客户计算机使用DataArrival事件内的GetData方法来获取已发送的信息。

10.2.2  Winsock控件的属性

Winsock控件的常用属性有:

1LocalHostName属性

格式:

Object.LocalHostName

说明:

返回本地机器名。在设计时是只读的。

2LocalIP属性

格式:

Object.LocalIP

说明:

返回本地机器的IP地址。在设计时是只读的。

3LocalPort属性

格式:

Object.LocalPort =端口号

说明:

返回或者设置所用到的本地端口。

对客户来说,该属性指定发送数据的本地端口。如果应用程序不需要特定端口,则指定0为端口号。在这种情况下,控件将选择一个随机端口。在建立起连接之后,这就是用于TCP连接的本地端口。

对于服务器来说,这是用于侦听的本地端口。如果指定的是端口0,就使用一个随机端口。在调用了Listen方法后,属性就包含了已选定的实际端口。

在计算机之间常用端口0来动态地建立连接。

4Protocol属性

格式:

Object.Protocol[=protocol]

说明:

返回或设置Winsock控件所使用的协议(TCPUDP)。其中,protocol可以取常量sckTCPProtocolTCP协议)或sckUDPProtocolUDP协议)。

在能够重新设置属性之前必须用Close方法关闭控件。

5RemoteHost属性

格式:

Object.RemoteHost =远程计算机的名称或地址。

说明:

返回或设置远程计算机,控件向它发送数据或从它那里接收数据。在指定该属性时,应更新URL属性来显示新值。如果更新URL的主机部分,则也要更新该属性来反映新值。

在调用OpenURLExecute方法时也可改变RemoteHost属性。

6RemotePort属性

格式:

Object.RemotePort = 端口号

说明:

返回或设置要连接的远程端口号,该属性的缺省值是80HTTP,通常用于WWW连接)。

7BytesReceived属性

格式:

object.BytesReceived

说明:

返回接收到的(当前在接收端缓冲区内的)数据的数量。使用GetData方法来获取数据。在设计时是只读的,而且是不可用的。

10.2.3  Winsock控件的方法

Winsock控件的常用方法有:

1GetData方法

格式:

Object.GetData data

说明:

获取当前的数据块并将其存储在变体类型变量data中。

2SendData方法

格式:

Object.SendData data

说明:

将数据发送给远程计算机。参数data表示要发送的数据。对于二进制数据应使用字节数组。

3Listen方法

格式:

Object.Listen

说明:

创建套接字并将其设置为侦听模式。该方法仅适用于TCP连接。

4Close方法

格式:

Object.Close

说明:

对客户机和服务器应用程序关闭TCP连接或侦听套接字。


字数:5671    最后更新:1年以前 [09-06 04:01]我爱钱 修改
本页编辑者:我爱钱  
[前一页]:第九章  [后一页]:第十章
[在本页中加入书签] [收藏本书] [推荐本书]
  17xie论坛 > 本书讨论区 > 本页评论   (共0条)
发表评论

用户名称 匿名发表
评论内容
验证码

关于我们 | 版权声明 | 免责声明 | 诚聘英才 | 联系我们 | 合作伙伴 | 友情链接 | 广告合作 | 提交意见
Copyright © 2007 17xie.com 互联网协同写书平台 京ICP备08002671号