slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
网络应用程序设计方法 PowerPoint Presentation
Download Presentation
网络应用程序设计方法

Loading in 2 Seconds...

play fullscreen
1 / 48

网络应用程序设计方法 - PowerPoint PPT Presentation


  • 123 Views
  • Uploaded on

网络应用程序设计方法. 第 8 章. 8.1 网络聊天程序任务 8.1.1 任务描述 VB 提供了一系列的网络编程控件,利用它们,网络编程将成为一件快乐而简单的工作。 VB 网络控件主要有三种: ( 1 ) Winsok 控件 主要用于编制基于 TCP/IP 或 UDP 协议的网络应用程序。 ( 2 ) Internet Transfer 控件 主要以来传输文件,执行 FTP 命令以及登录服务器等。 ( 3 ) WebBrowser 用于创建浏览器

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '网络应用程序设计方法' - megan


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide2
8.1 网络聊天程序任务

8.1.1 任务描述

VB提供了一系列的网络编程控件,利用它们,网络编程将成为一件快乐而简单的工作。

VB网络控件主要有三种:

(1)Winsok控件 主要用于编制基于TCP/IP或UDP协议的网络应用程序。

(2)Internet Transfer控件 主要以来传输文件,执行FTP命令以及登录服务器等。

(3)WebBrowser用于创建浏览器

本节先介绍Winsok控件。

slide3
在网络编程中最常用的方案是客户机/服务器模式(Client/Server,简称C/S)。这种模式包含客户机和服务器两类应用程序。其中客户应用程序向服务器请求服务,而服务程序通常在一个众所周知的地址侦听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户提出了连接请求。此时,服务持续将被唤醒,并对客户的请求作出适当的反应。在网络编程中最常用的方案是客户机/服务器模式(Client/Server,简称C/S)。这种模式包含客户机和服务器两类应用程序。其中客户应用程序向服务器请求服务,而服务程序通常在一个众所周知的地址侦听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户提出了连接请求。此时,服务持续将被唤醒,并对客户的请求作出适当的反应。
slide4
聊天服务程序:由客户端和服务端两个程序组成,采用Winsok控件开发。这两个程序可以在同一台计算机上运行,也可以在网络上不同的计算机上运行。整个系统的运行机制是:聊天服务程序:由客户端和服务端两个程序组成,采用Winsok控件开发。这两个程序可以在同一台计算机上运行,也可以在网络上不同的计算机上运行。整个系统的运行机制是:

第一步:建立连接

主要过程是:由客户端程序向服务端程序发出连接请求,服务端程序收到并接受连接请求,至此客户机与服务器创建了数据交流通道。

第二步:开始聊天

主要过程是:在客户机的“发送的信息”文本框中输入文字时,服务器端的“收到的信息”文本框中就会实时地显示相同的文字,反之亦然。

slide5
P215 习题 一、填空题

1. Winsock控件主要用来编制TCP/IP或协议的通话程序。

答案:UDP

2. 在网络编程中最常用的方案是。

答案:客户机/服务器程序(Client/Server)

slide6
P215 习题 三、问答题

2.简述网络聊天程序的运行过程。

答:网络聊天程序的运行过程是:

第一步:建立连接

主要过程是:由客户端程序向服务端程序发出连接请求,服务端程序收到并接受连接请求,至此客户机与服务器创建了数据交流通道。

第二步:开始聊天

主要过程是:在客户机的“发送的信息”文本框中输入文字时,服务器端的“收到的信息”文本框中就会实时地显示相同的文字,反之亦然。

slide7
8.1.2. 服务器的界面设计

1.创建一个“标准 EXE”工程,选中“工程”菜单的“部件”,在控件中找到Microsoft Winsock Control并将其选中。

2.将Form1的名称改为frmSvr,并在其中添加两个命令按钮(Command1的Caption属性为“退出”,Command2的Caption属性为“发送”)。

3.在窗体是添加三个TextBox控件,其名称分别为txtServerIP,txtSend和txtReceive。

4.在窗体上添加一个Winsock控件,将其Protocol(协议)属性设置为0(即sckTCPProtocol)。

slide8
8.1.3 服务器程序代码设计

Private Sub Form_Load()

'设置侦听端口

WinsockServer.LocalPort = 10001

'读取服务器的IP地址

TxtServerIP.Text = WinsockServer.LocalIP

'开始侦听

WinsockServer.Listen

End Sub

Private Sub Command1_Click()

'点击“退出”按钮后关闭应用程序

Unload Me

End Sub

slide9
8.1.3 服务器程序代码设计

Private Sub Command2_Click()

'只要txtSend文本框的内容写好以后就由WinsockServer控件发送

WinsockServer.SendData TxtSend.Text

End Sub

Private Sub WinsockServer_ConnectionRequest(ByVal requestID As Long)

'当收到连接请求时,Winsock处于侦听状态

'此时应该使用Close方法关闭Winsock,然后使用Accept方法接受连接请求

WinsockServer.Close

WinsockServer.Accept requestID

End Sub

slide10
8.1.3 服务器程序代码设计

Private Sub WinsockServer_DataArrival(ByVal BytesTotal As Long)

'当客户端有信息发送来时,利用WinsockServer控件的GatData方法读取数据

'并将其显示在txtReceive文本框中

Dim MyStr As String

WinsockServer.GetData MyStr

TxtReceive.Text = MyStr

End Sub

slide11
8.1.4 客户机程序界面设计

1.创建一个新的“标准 EXE”工程,并添加Winsock 控件。

2.将Form1的名称改为frmClt,并在其中添加两个命令按钮(Command1的Caption属性为“退出”, Command2的Caption属性为“连接服务器” ,Command3的Caption属性为“发送”)。

3.在窗体是添加四个TextBox控件,其名称分别为txtClientIP,txtServerIP,txtSend和txtReceive。

4.在窗体上添加一个Winsock控件,将其Protocol(协议)属性设置为0(即sckTCPProtocol)。

slide12
8.1.4. 客户机的程序代码设计

Private Sub Form_Load()

'设置聊天服务器的侦听端口

WinsockClient.RemotePort = 10001

'读取本机的IP地址

txtClientIP.Text = WinsockClient.LocalIP

End Sub

Private Sub Command1_Click()

'点击“退出”按钮后关闭应用程序

Unload Me

End Sub

slide13
8.1.4. 客户机的程序代码设计

Private Sub Command2_Click()

'根据txtServerIP文本框中输入的服务器IP,连接聊天服务器

WinsockClient.RemoteHost = txtServerIP.Text

WinsockClient.Connect

End Sub

Private Sub Command3_Click()

'输入txtSend文本框的内容后由WinsockServer控件发送

WinsockClient.SendData txtSend.Text

End Sub

slide14
8.1.4. 客户机的程序代码设计

Private Sub WinsockClient_Connect()

'如果与服务器连接成功,则向用户提供下列信息

MsgBox "你成功地与聊天服务器进行了连接", vbInformation

End Sub

Private Sub WinsockClient_DataArrival(ByVal BytesTotal As Long)

'当服务器有信息发送来时,利用WinsockClient控件的GatData方法读取数据

'并将其显示在txtReceive文本框中

Dim MyStr As String

WinsockClient.GetData MyStr

txtReceive.Text = MyStr

End Sub

slide16
8.2 Winsock控件及网络应用程序设计基础

Winsock控件是建立在TCP协议的基础上,能够完成远程计算机间的通信,用途非常广泛。即使我们对TCP/IP,TCP这些知识不太熟悉,只要理解了网络应用程序设计的一般原理,并对Winsock的主要属性、方法和事件有所了解,也可以在很短时间内创建一个简单的网络通信程序。

slide17
8.2.1 Winsock控件的主要属性

Winsock控件主要有八个属性:

1. BytesReceived属性:返回接收到的数据。通常用GetData方法来获取这些数据。

2. LocalHostName属性:返回本地计算机的名称。

3. LocalIP属性:返回本地计算机的IP地址。

4. LocalPost属性:返回或者设置所用的端口,如果设置为0,则使用随机端口。

5. Protocol属性:返回或设置Winsock所用的协议(TCP或UDP)。

6. RemoteHostName属性,返回或设置远程计算机的名称。

7. RemoteHostIP属性,返回远程计算机的IP地址。

8. State属性:返回Winsock控件的当前状态。

slide19
P215 习题 二、填空题

3. 如果希望得到本地计算机的IP地址,可以使用Winsock控件的属性。

答案:LocalIP

4. Winsock控件的BytesReceived属性返回接收到的数据,通常使用方法来获取这些数据。。

答案:GetData

3. 如果Winsock1.LocaPort=0,那么应用程序将。

答案:使用随机端口

slide20
8.2.2 Winsock控件的主要方法

Winsock控件的方法主要有六个:

1. Listen方法

语法: Winsock对象.Listen

作用:使服务器处于侦听状态,等待客户访问。

2. Connect方法

语法: Winsock对象.Connect[远程主机IP,远程端口]

作用:用于向远程主机发出连接请求。

3. Accept方法

语法: Winsock对象.Accept RequestID

作用:用于接受一个连接请求,其中RequestID是客户机发来的请求信号

slide21
8.2.2 Winsock控件的主要方法

Winsock控件的方法主要有六个:

4. SendData方法

语法: Winsock对象.SendData 数据

作用:用于发送数据

5. GetData方法

语法: Winsock对象. GetData 变量[数据类型[,最大长度]

作用:用来获得接收到的数据

6. Clcse方法

语法: Winsock对象.Close

作用:关闭当前连接

slide22
P215 习题 二、填空题

5. Winsock1.Listen语句的含义是。

答案:LocalIP

使服务器处于侦听状态,等待客户访问。

slide23
8.2.3 Winsock控件的主要事件

Winsock控件的事件主要有两个:

1.DataArrival事件:一旦数据到达,就会触发该事件。它通常与GetData方法一起使用,通过GetData方法获得新到达的数据。

2. ConnectionRequest事件:当客户机使用Connect方法请求连接时触发该事件,它通常与Accept方法一起使用,用来接受客户机的连接请求。

slide24
P214 习题 一、单项选择题

1. 一旦数据到达,将首先触发Winsock控件的( )。

A. DataArrival事件

B. ConnectionRequest事件

C. DataSand事件

D. DataGet事件

答案:B

slide25
P214 习题 一、单项选择题

2. 要发送数据,通常使用Winsock控件的( )。

A. SendData方法

B. Listen方法

C. Accept方法

D. GetData方法

答案:A

slide26
P214 习题 一、单项选择题

3. 当Winsock控件处于关闭状态时,其State属性的值是( )。

A. 1

B. 0

C. 2

D. 6

答案:B

slide27
P214 习题 一、单项选择题

4. 当Winsock控件的LocalPort属性的作用是( )。

A. 仅返回所有端口

B. 仅设置所有端口

C. 返回或设置所有端口

D. 返回或设置IP地址

答案:B

slide28
P214 习题 一、单项选择题

5. 当使用SendData将数据发送到主机后时,将触发的Winsock控件的是( )。

A. SendProgress

B. MouseDown

C. Click

D. KeyPress

答案:A

slide29
8.2.4 网络应用程序设计基础

1. 基于Socket的通信过程

Winsock控件是基于Socket接口(套接字)创建的。它是现在TCP/IP网络中最通用的API(应用程序接口),也是在Internet上进行应用程序开发最通用的API。Windows Socket规范已成为Windows网络编程的标准。

Socket在计算机中提供了一个通信端口,可以通过这个端口与任何一个也同样具有Socket接口的计算机进行通信。应用程序在网络上传输、接收的信息都通过这个Socket接口来实现。基于Socket的通信过程如下页图所示:

slide30

通信细节

发送

接收

Socket

Socket

发送

接收

应用程序A

应用程序B

利用Socket进行网络编程,只需对Socket接口进行

数据的读写操作,根本不必关心两台计算机间的通

信细节就能够完成数据的发送和接收工作。

slide31

通信细节

发送

接收

Socket

Socket

发送

接收

应用程序A

应用程序B

P 215 习题 三 问答题

1. 简述基于Socket的通信过程。

利用Socket进行网络编程,只需对Socket接口进行数据的

读写操作,根本不必关心两台计算机间的通信细节就能够完

成数据的发送和接收工作。

slide32
2.基于Winsock控件的开发模式

VB提供的Winsock控件正是基于Socket规范创建的。利用Winsock控件开发网络通信系统时,通常要涉及到服务器和客户机两类应用程序:

(1)服务器程序的开发模式

  • 服务器程序必须设置好LocalPort属性,作为侦听端口。该值可设置成任何一个整数,只要其它应用程序没有使用过的值即可,单习惯上应大于1000。
  • 使用Listen方法使服务器进入侦听状态,等待客户机的连接请求。
slide33
2.基于Winsock控件的开发模式

(1)服务器程序的开发模式

  • 客户机程序发出连接请求后,将触发服务器程序的ConnectionRequest事件,该事件得到一个参数RequestID。
  • 服务器程序使用Accept方法接受客户机程序的RequestID请求。至此,服务器程序就可以使用SendData方法向客户机发送数据了。
  • 当服务器接收到数据时,会产生DataArrival事件。在该事件中可使用GetData方法接收数据。
slide34

(2)客户机程序的开发模式●首先设置好RemoteHost属性,用来指向运行服务器程序的远程计算机的的主机名或IP地址。●设置RemotePort属性,用来指向服务器程序的侦听端口号。●使用Connect方法向服务器提出连接请求。●如果服务器接受了上述请求,客户机程序就会产生Connect事件,可以根据需要,在此事件中编写程序,比如使用MsgBox函数向用户提示“连接已成功”之类的信息。●连接成功后,就可以根据需要使用SendData方法向服务器发送数据了。●当客户机程序接收的数据时,就会产生DataArrival事件,可以用GetData方法接收数据。(2)客户机程序的开发模式●首先设置好RemoteHost属性,用来指向运行服务器程序的远程计算机的的主机名或IP地址。●设置RemotePort属性,用来指向服务器程序的侦听端口号。●使用Connect方法向服务器提出连接请求。●如果服务器接受了上述请求,客户机程序就会产生Connect事件,可以根据需要,在此事件中编写程序,比如使用MsgBox函数向用户提示“连接已成功”之类的信息。●连接成功后,就可以根据需要使用SendData方法向服务器发送数据了。●当客户机程序接收的数据时,就会产生DataArrival事件,可以用GetData方法接收数据。

slide35
P215 习题 三、问答题

3. 简述基于Winsock控件的开发过程。

答:1)服务器程序的开发模式

服务器程序必须设置好LocalPort属性,作为侦听端口。使用Listen方法使服务器进入侦听状态,等待客户机的连接请求。客户机程序发出连接请求后,将触发服务器程序的ConnectionRequest事件,该事件得到一个参数RequestID。服务器程序使用Accept方法接受客户机程序的RequestID请求。至此,服务器程序就可以使用SendData方法向客户机发送数据了。当服务器接收到数据时,会产生DataArrival事件。在该事件中可使用GetData方法接收数据。

slide36
P215 习题 三、问答题

3. 简述基于Winsock控件的开发过程。

2)客户机程序的开发模式

首先设置好RemoteHost属性,用来指向运行服务器程序的远程计算机的的主机名或IP地址。设置RemotePort属性,用来指向服务器程序的侦听端口号。使用Connect方法向服务器提出连接请求。如果服务器接受了上述请求,客户机程序就会产生Connect事件。连接成功后,就可以根据需要使用SendData方法向服务器发送数据了。当客户机程序接收的数据时,就会产生DataArrival事件,可以用GetData方法接收数据。

slide37
8.3 其它网络应用程序设计

8.3.1 局域网中保证联网计算机时间同步

当采用客户机/服务器模式在局域网上开发系统时,必须保证所有计算机的时钟时间一致。在就需要用到统一的时间,以便协调工作,最号的方法就是通过程序的方法,解决时钟同步的问题。

slide38

数据服务器

MyServer

……

应用程序1

应用程序2

应用程序n

这是某一应用系统的网络拓补结构,我们可以采用Winsock

控件解决众多客户机与数据服务器间的时间同步问题。

slide39
解决时钟同步的基本思路是:首先精确调整服务器的时钟,然后,当客户机启动时与服务器连接,并与服务器“对时”。这样,每当执行应用程序时,客户机就会与服务器时钟同步了。解决时钟同步的基本思路是:首先精确调整服务器的时钟,然后,当客户机启动时与服务器连接,并与服务器“对时”。这样,每当执行应用程序时,客户机就会与服务器时钟同步了。
slide40

P215 习题 三、问答题

4. 如何保证局域网中联网的计算机同步运行?

答:解决时钟同步的基本思路是:首先精确调整服务器的时钟,然后,当客户机启动时与服务器连接,并与服务器“对时”。这样,每当执行应用程序时,客户机就会与服务器时钟同步了。

slide41
1.客户机程序的主要代码

(1)与服务器建立连接

在客户机主窗体的Load事件中连接服务器程序,具体方法与聊天程序相同。

Private Sub Form_Load()

'设置聊天服务器的侦听端口

WinsockClient.RemotePort = 10001

'读取本机的IP地址

txtClientIP.Text = WinsockClient.LocalIP

'根据txtServerIP文本框中输入的服务器IP,连接聊天服务器

WinsockClient.RemoteHost = txtServerIP.Text

WinsockClient.Connect

'如果与服务器连接成功,则向用户提供下列信息

MsgBox "你成功地与聊天服务器进行了连接",

End Sub

slide42
(2)其它代码

Private Sub WinsockClient_DataArrival(ByVal bytesTotal)

’当收到服务器发来的数据时,完成以下工作:

’(1)日期数据类型接收数据;

’(2)设置本机的系统日期

’定义一个日期类型数据变量

Dim MyDate As Date

’以日期数据类型接受服务器日期数据

WinsockClient.GetData MyDate,VbDate

’使本机的系统日期等于服务器日期

Date=MyDate

End Sub

slide43
2.服务端程序主要代码

Private Sub WinsockServer_ConnectionRequest _

(ByVal RequestID As Long)

’当收到客户机的连接请求时,完成以下工作:

’(1)结束Winsock的侦听状态;

’(2)接受连接请求;

’(3)将服务器的系统日期发送给客户机

WinsockServer.Close

WinsockServer.Accept RequestID

’将系统当前的时间Date发送给提出请求的客户机

WinsockServer.SendDate

End Sub

slide44
8.3.2 Web浏览器

1.一个简单的浏览器应用程序示例

(1)创建一个新的“标准EXE”工程。利用“工程”菜单的“部件”选项添加“Windows Internet Controls”以获得对WebBrowser控件的支持。

(2)在Form1窗口上添加Text1、Command1和WebBrowser1等控件。

(3)在Command1控件的Click事件中,添加如下代码:

Private Sub Command1_Click( )

’连接要浏览的网站地址

WebBrowser1.Navigate Text1.Text

End Sub

(4)运行程序。在Text1输入网址后,单击Command1连接按钮,即可进入有关网页。(演示)

slide45
2.一个较完整的浏览器应用程序

一个真正的浏览器(比如IE)至少需要后退(Back)、前进(Forword)、停止(Stop)、刷新(Refresh)、主页(Home)和搜索(Search)等功能按钮,还能够显示当前网页的下载速度。要完成这些工作,就必须深入学习WebBrowser控件的有关知识。

slide46
(1)LocationURL和LocationName属性

LocationURL属性返回装入网页的地址, LocationName属性则返回当前装入网页的标题。它们均是只读的,不能通过VB程序改变其值。

(2)ProgressChange事件

下载网页通常会花费一定的时间,可利用ProgressChange事件了提醒用户当前下载的进度。只要网页正在下载,改事件就会被周期性地触发。可将该事件与Progress控件结合使用,实现下载进度条提示效果。

(3)停止网页下载的方法

当用户觉得下载一个网页花费的时间太长而想终止下载时,可使用Stop方法。

slide47
(4)后退与前进的方法

如果要实现大多数浏览器所具有的后退与前进功能,则可以使用GoBack,GoForword方法。这两个方法的基本原理是:对Windows目录下的History文件夹进行搜索,重新调出已查看过的HTMT页面缓存,从而完成后退与前进的功能。但如果要得到当前网页的最新内容,则要使用Refresh方法进行刷新。此外,如果想要在自己的浏览器程序中加入主页,搜索等功能,则可以使用GoHome,GoSearch方法。

(5)DownLoadBegin和DownLoadComplete事件

当网页下载工作开始和结束时,分别触发这两个事件。这两个事件通常与ProgressChange事件结合使用,起到提示用户的作用。