网络应用程序设计方法.ppt
网络应用程序设计方法网络应用程序设计方法第第8 8章章1 8.1 网络聊天程序任务网络聊天程序任务 8.1.1 任务描述任务描述 VB提供了一系列的网络编程控件,利用它提供了一系列的网络编程控件,利用它们,网络编程将成为一件快乐而简单的工作。们,网络编程将成为一件快乐而简单的工作。VB网络控件主要有三种:网络控件主要有三种:(1)Winsok控件控件 主要用于编制基于主要用于编制基于TCP/IP或或UDP协议的网络应用程序。协议的网络应用程序。(2)Internet Transfer控件控件 主要以来传输主要以来传输文件,执行文件,执行FTP命令以及登录服务器等。命令以及登录服务器等。(3)WebBrowser 用于创建浏览器用于创建浏览器 本节先介绍本节先介绍Winsok控件。控件。2 在网络编程中最常用的方案是客户在网络编程中最常用的方案是客户机机/服务器模式(服务器模式(Client/ServerClient/Server,简称简称C/SC/S)。)。这种模式包含客户机和服务器这种模式包含客户机和服务器两类应用程序。其中客户应用程序向服两类应用程序。其中客户应用程序向服务器请求服务,而服务程序通常在一个务器请求服务,而服务程序通常在一个众所周知的地址侦听对服务的请求,也众所周知的地址侦听对服务的请求,也就是说,服务进程一直处于休眠状态,就是说,服务进程一直处于休眠状态,直到一个客户提出了连接请求。此时,直到一个客户提出了连接请求。此时,服务持续将被唤醒,并对客户的请求作服务持续将被唤醒,并对客户的请求作出适当的反应。出适当的反应。3 聊天服务程序聊天服务程序:由客户端和服务端两个程序:由客户端和服务端两个程序组成,采用组成,采用WinsokWinsok控件开发。这两个程序可以在控件开发。这两个程序可以在同一台计算机上运行,也可以在网络上不同的计同一台计算机上运行,也可以在网络上不同的计算机上运行。整个系统的运行机制是:算机上运行。整个系统的运行机制是:第一步:建立连接第一步:建立连接 主要过程是:由客户端程序向服务端程序发主要过程是:由客户端程序向服务端程序发出连接请求,服务端程序收到并接受连接请求,出连接请求,服务端程序收到并接受连接请求,至此客户机与服务器创建了数据交流通道。至此客户机与服务器创建了数据交流通道。第二步:开始聊天第二步:开始聊天 主要过程是:在客户机的主要过程是:在客户机的“发送的信息发送的信息”文文本框中输入文字时,服务器端的本框中输入文字时,服务器端的“收到的信息收到的信息”文本框中就会实时地显示相同的文字,反之亦然。文本框中就会实时地显示相同的文字,反之亦然。4P215 习题习题 一、填空题一、填空题1.Winsock控件主要用来编制控件主要用来编制TCP/IP或或 协协议的通话程序。议的通话程序。答案:答案:UDP2.在网络编程中最常用的方案是在网络编程中最常用的方案是 。答案:客户机答案:客户机/服务器程序(服务器程序(Client/Server)5P215 P215 习题习题 三、问答题三、问答题2.2.简述网络聊天程序的运行过程。简述网络聊天程序的运行过程。答:网络聊天程序的运行过程是:答:网络聊天程序的运行过程是:第一步:建立连接第一步:建立连接 主要过程是:由客户端程序向服务端程序发主要过程是:由客户端程序向服务端程序发出连接请求,服务端程序收到并接受连接请求,出连接请求,服务端程序收到并接受连接请求,至此客户机与服务器创建了数据交流通道。至此客户机与服务器创建了数据交流通道。第二步:开始聊天第二步:开始聊天 主要过程是:在客户机的主要过程是:在客户机的“发送的信息发送的信息”文文本框中输入文字时,服务器端的本框中输入文字时,服务器端的“收到的信息收到的信息”文本框中就会实时地显示相同的文字,反之亦然。文本框中就会实时地显示相同的文字,反之亦然。68.1.2.8.1.2.服务器的界面设计服务器的界面设计1.1.创建一个创建一个“标准标准 EXE”EXE”工程,选中工程,选中“工程工程”菜单菜单的的“部件部件”,在控件中找到,在控件中找到Microsoft Winsock Microsoft Winsock ControlControl并将其选中。并将其选中。2.2.将将Form1Form1的名称改为的名称改为frmSvrfrmSvr,并在其中添加两个并在其中添加两个命令按钮(命令按钮(Command1Command1的的CaptionCaption属性为属性为“退出退出”,Command2Command2的的CaptionCaption属性为属性为“发送发送”)。)。3.3.在窗体是添加三个在窗体是添加三个TextBoxTextBox控件,其名称分别为控件,其名称分别为txtServerIPtxtServerIP,txtSendtxtSend和和txtReceivetxtReceive。4.4.在窗体上添加一个在窗体上添加一个WinsockWinsock控件,将其控件,将其ProtocolProtocol(协议)属性设置为协议)属性设置为0 0(即(即sckTCPProtocolsckTCPProtocol)。)。78.1.3 8.1.3 服务器程序代码设计服务器程序代码设计Private Sub Form_Load()Private Sub Form_Load()设置侦听端口设置侦听端口 WinsockServerWinsockServer.LocalPortLocalPort=10001=10001 读取服务器的读取服务器的IPIP地址地址 TxtServerIPTxtServerIP.Text=.Text=WinsockServer WinsockServer.LocalIPLocalIP 开始侦听开始侦听 WinsockServerWinsockServer.Listen.ListenEnd SubEnd SubPrivate Sub Command1_Click()Private Sub Command1_Click()点击点击“退出退出”按钮后关闭应用程序按钮后关闭应用程序 Unload MeUnload MeEnd SubEnd Sub88.1.3 8.1.3 服务器程序代码设计服务器程序代码设计Private Sub Command2_Click()Private Sub Command2_Click()只要只要txtSendtxtSend文本框的内容写好以后就由文本框的内容写好以后就由WinsockServerWinsockServer控件发送控件发送 WinsockServerWinsockServer.SendData TxtSendSendData TxtSend.Text.TextEnd SubEnd SubPrivate SubPrivate Sub WinsockServer WinsockServer_ _ConnectionRequestConnectionRequest(ByVal requestIDByVal requestID As Long)As Long)当收到连接请求时,当收到连接请求时,WinsockWinsock处于侦听状态处于侦听状态 此时应该使用此时应该使用CloseClose方法关闭方法关闭WinsockWinsock,然后使用然后使用AcceptAccept方法接方法接受连接请求受连接请求 WinsockServerWinsockServer.Close.Close WinsockServer WinsockServer.Accept.Accept requestID requestIDEnd Sub End Sub 98.1.3 8.1.3 服务器程序代码设计服务器程序代码设计Private SubPrivate Sub WinsockServer WinsockServer_ _DataArrivalDataArrival(ByVal ByVal BytesTotalBytesTotal As Long)As Long)当客户端有信息发送来时,利用当客户端有信息发送来时,利用WinsockServerWinsockServer控件控件的的GatDataGatData方法读取数据方法读取数据 并将其显示在并将其显示在txtReceivetxtReceive文本框中文本框中 DimDim MyStr MyStr As String As String WinsockServer WinsockServer.GetData MyStrGetData MyStr TxtReceive TxtReceive.Text=.Text=MyStr MyStrEnd SubEnd Sub108.1.4 8.1.4 客户机程序界面设计客户机程序界面设计1.1.创建一个新的创建一个新的“标准标准 EXE”EXE”工程,并添加工程,并添加Winsock Winsock 控件。控件。2.2.将将Form1Form1的名称改为的名称改为frmCltfrmClt,并在其中添加两个并在其中添加两个命令按钮(命令按钮(Command1Command1的的CaptionCaption属性为属性为“退出退出”,Command2Command2的的CaptionCaption属性为属性为“连接服务器连接服务器”,Command3Command3的的CaptionCaption属性为属性为“发送发送”)。)。3.3.在窗体是添加四个在窗体是添加四个TextBoxTextBox控件,其名称分别为控件,其名称分别为txtClientIPtxtClientIP,txtServerIPtxtServerIP,txtSendtxtSend和和txtReceivetxtReceive。4.4.在窗体上添加一个在窗体上添加一个WinsockWinsock控件,将其控件,将其ProtocolProtocol(协议)属性设置为协议)属性设置为0 0(即(即sckTCPProtocolsckTCPProtocol)。)。118.1.4.客户机的程序代码设计客户机的程序代码设计Private Sub Form_Load()设置聊天服务器的侦听端口设置聊天服务器的侦听端口 WinsockClient.RemotePort=10001 读取本机的读取本机的IP地址地址 txtClientIP.Text=WinsockClient.LocalIPEnd SubPrivate Sub Command1_Click()点击点击“退出退出”按钮后关闭应用程序按钮后关闭应用程序 Unload MeEnd Sub128.1.4.客户机的程序代码设计客户机的程序代码设计Private Sub Command2_Click()根根据据txtServerIP文文本本框框中中输输入入的的服服务务器器IP,连连接接聊聊天服务器天服务器 WinsockClient.RemoteHost=txtServerIP.Text WinsockClient.ConnectEnd SubPrivate Sub Command3_Click()输输入入txtSend文文本本框框的的内内容容后后由由WinsockServer控控件件发送发送 WinsockClient.SendData txtSend.TextEnd Sub138.1.4.客户机的程序代码设计客户机的程序代码设计Private Sub WinsockClient_Connect()如果与服务器连接成功,则向用户提供下列信息如果与服务器连接成功,则向用户提供下列信息 MsgBox 你你 成成 功功 地地 与与 聊聊 天天 服服 务务 器器 进进 行行 了了 连连 接接,vbInformationEnd SubPrivate Sub WinsockClient_DataArrival(ByVal BytesTotal As Long)当当服服务务器器有有信信息息发发送送来来时时,利利用用WinsockClient控控件件的的GatData方法读取数据方法读取数据 并将其显示在并将其显示在txtReceive文本框中文本框中 Dim MyStr As String WinsockClient.GetData MyStr txtReceive.Text=MyStrEnd Sub14演示聊天程序演示聊天程序15 8.2 Winsock控件及网络应用程序设计基础控件及网络应用程序设计基础 Winsock控控件件是是建建立立在在TCP协协议议的的基基础础上上,能能够够完完成成远远程程计计算算机机间间的的通通信信,用用途途非非常常广广泛泛。即即使使我我们们对对TCP/IP,TCP这这些些知知识识不不太太熟熟悉悉,只只要要理理解解了了网网络络应应用用程程序序设设计计的的一一般般原原理理,并并对对Winsock的的主主要要属属性性、方方法法和和事事件件有有所所了了解解,也也可可以以在在很很短短时时间间内内创创建建一一个个简单的网络通信程序。简单的网络通信程序。168.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控件的当前状态。控件的当前状态。17符号常数符号常数值值含义含义sckClosed0关闭状态,缺省值关闭状态,缺省值sckOpen1打开状态打开状态sckListening2侦听侦听状态状态sckConnectionPending3连接状态连接状态sckResolvingHost4解析主机解析主机sckHostResolved5以以解析的主机解析的主机sckConnecting6正在连接正在连接Sckconnected7已经连接已经连接sckClosing8客户端正在关闭连接客户端正在关闭连接sckErros9错误错误Winsock控件的控件的State属性属性18P215 习题习题 二二、填空题填空题3.如果希望得到本地计算机的如果希望得到本地计算机的IP地址,可地址,可以使用以使用Winsock控件的控件的 属性。属性。答案:答案:LocalIP4.Winsock控件的控件的BytesReceived属性返回属性返回接收到的数据,通常使用接收到的数据,通常使用 方法方法来获取这些数据。来获取这些数据。答案:答案:GetData3.如果如果Winsock1.LocaPort=0,那么应用程那么应用程序将序将 。答案:使用随机端口答案:使用随机端口198.2.2 8.2.2 WinsockWinsock控件的主要方法控件的主要方法WinsockWinsock控件的方法主要有六个:控件的方法主要有六个:1.1.ListenListen方法方法语法:语法:WinsockWinsock对象对象.ListenListen作用:使服务器处于侦听状态,等待客户访问。作用:使服务器处于侦听状态,等待客户访问。2.2.ConnectConnect方法方法语语法法:WinsockWinsock对对象象.ConnectConnect远远程程主主机机IPIP,远远程端口程端口 作用:用于向远程主机发出连接请求。作用:用于向远程主机发出连接请求。3.3.AcceptAccept方法方法语法:语法:WinsockWinsock对象对象.Accept Accept RequestIDRequestID作作用用:用用于于接接受受一一个个连连接接请请求求,其其中中RequestIDRequestID是是客户机发来的请求信号客户机发来的请求信号208.2.2 8.2.2 WinsockWinsock控件的主要方法控件的主要方法WinsockWinsock控件的方法主要有六个:控件的方法主要有六个:4.4.SendDataSendData方法方法语法:语法:WinsockWinsock对象对象.SendData SendData 数据数据作用:用于发送数据作用:用于发送数据5.5.GetDataGetData方法方法语语法法:WinsockWinsock对对象象.GetData GetData 变变量量 数数据据类类型型,最大长度,最大长度 作用:用来获得接收到的数据作用:用来获得接收到的数据6.6.ClcseClcse方法方法语法:语法:WinsockWinsock对象对象.CloseClose作用:关闭当前连接作用:关闭当前连接21P215 习题习题 二二、填空题填空题5.Winsock1.Listen语句的含义是语句的含义是 。答案:答案:LocalIP使使服务器处于侦听状态,等待客户访问。服务器处于侦听状态,等待客户访问。228.2.3 8.2.3 WinsockWinsock控件的主要事件控件的主要事件WinsockWinsock控件的事件主要有两个:控件的事件主要有两个:1.1.DataArrivalDataArrival事事件件:一一旦旦数数据据到到达达,就就会会触触发发该该事事件件。它它通通常常与与GetDataGetData方方法法一一起起使使用用,通通过过GetDataGetData方法获得新到达的数据。方法获得新到达的数据。2.2.ConnectionRequestConnectionRequest事事 件件:当当 客客 户户 机机 使使 用用ConnectConnect方方法法请请求求连连接接时时触触发发该该事事件件,它它通通常常与与AcceptAccept方方法法一一起起使使用用,用用来来接接受受客客户户机机的的连连接请求。接请求。23P214 习题习题 一、单项选择题一、单项选择题1.一旦数据到达,将首先触发一旦数据到达,将首先触发Winsock控控件的(件的()。)。A.DataArrival事件事件B.ConnectionRequest事件事件C.DataSand事件事件D.DataGet事件事件答案:答案:B24P214 习题习题 一、单项选择题一、单项选择题2.要发送数据,通常使用要发送数据,通常使用Winsock控件的控件的()。)。A.SendData方法方法B.Listen方法方法C.Accept方法方法D.GetData方法方法答案:答案:A25P214 习题习题 一、单项选择题一、单项选择题3.当当Winsock控件处于关闭状态时,其控件处于关闭状态时,其State属性的值是(属性的值是()。)。A.1B.0C.2D.6答案:答案:B26P214 习题习题 一、单项选择题一、单项选择题4.当当Winsock控件的控件的LocalPort属性的作用属性的作用是(是()。)。A.仅返回所有端口仅返回所有端口B.仅设置所有端口仅设置所有端口C.返回或设置所有端口返回或设置所有端口D.返回或设置返回或设置IP地址地址答案:答案:B27P214 习题习题 一、单项选择题一、单项选择题5.当使用当使用SendData将数据发送到主机后时,将数据发送到主机后时,将触发的将触发的Winsock控件的是(控件的是()。)。A.SendProgressB.MouseDownC.ClickD.KeyPress答案:答案:A288.2.4 8.2.4 网络应用程序设计基础网络应用程序设计基础1.1.基于基于SocketSocket的通信过程的通信过程WinsockWinsock控控件件是是基基于于SocketSocket接接口口(套套接接字字)创创建建的的。它它是是现现在在TCP/IPTCP/IP网网络络中中最最通通用用的的APIAPI(应应用用程程序序接接口口),也也是是在在InternetInternet上上进进行行应应用用程程序序开开发发最最通通用用的的APIAPI。Windows Windows SocketSocket规规范范已已成成为为WindowsWindows网络编程的标准。网络编程的标准。SocketSocket在在计计算算机机中中提提供供了了一一个个通通信信端端口口,可可以以通通过过这这个个端端口口与与任任何何一一个个也也同同样样具具有有SocketSocket接接口口的的计计算算机机进进行行通通信信。应应用用程程序序在在网网络络上上传传输输、接接收收的的信信息息都都通通过过这这个个SocketSocket接接口口来来实实现现。基基于于SocketSocket的通信过程如下页图所示:的通信过程如下页图所示:29SocketSocket应用程序应用程序A发送发送发送发送接收接收接收接收应用程序应用程序B通信细节通信细节利用利用Socket进行网络编程,只需对进行网络编程,只需对Socket接口进行接口进行数据的读写操作,根本不必关心两台计算机间的通数据的读写操作,根本不必关心两台计算机间的通信细节就能够完成数据的发送和接收工作。信细节就能够完成数据的发送和接收工作。30SocketSocket应用程序应用程序A发送发送发送发送接收接收接收接收应用程序应用程序B通信细节通信细节 利用利用Socket进行网络编程,只需对进行网络编程,只需对Socket接口进行数据的接口进行数据的读写操作,根本不必关心两台计算机间的通信细节就能够完读写操作,根本不必关心两台计算机间的通信细节就能够完成数据的发送和接收工作。成数据的发送和接收工作。P 215 习题习题 三三 问答题问答题1.简述基于简述基于Socket的通信过程。的通信过程。312.2.基于基于WinsockWinsock控件的开发模式控件的开发模式VBVB提提供供的的WinsockWinsock控控件件正正是是基基于于SocketSocket规规范范创创建建的的。利利用用WinsockWinsock控控件件开开发发网网络络通通信信系系统统时时,通通常常要要涉涉及到服务器和客户机两类应用程序:及到服务器和客户机两类应用程序:(1 1)服务器程序的开发模式)服务器程序的开发模式v服服务务器器程程序序必必须须设设置置好好LocalPortLocalPort属属性性,作作为为侦侦听听端端口口。该该值值可可设设置置成成任任何何一一个个整整数数,只只要要其其它它应应用用程程序序没没有有使使用用过过的的值值即即可可,单单习习惯惯上上应应大大于于10001000。v使使用用ListenListen方方法法使使服服务务器器进进入入侦侦听听状状态态,等等待待客客户户机的连接请求。机的连接请求。322.2.基于基于WinsockWinsock控件的开发模式控件的开发模式(1 1)服务器程序的开发模式)服务器程序的开发模式v客客户户机机程程序序发发出出连连接接请请求求后后,将将触触发发服服务务器器程程序序的的ConnectionRequestConnectionRequest事事件件,该该事事件件得得到到一一个个参参数数RequestIDRequestID。v服服务务器器程程序序使使用用AcceptAccept方方法法接接受受客客户户机机程程序序的的RequestIDRequestID请请求求。至至此此,服服务务器器程程序序就就可可以以使使用用SendDataSendData方法向客户机发送数据了。方法向客户机发送数据了。v当当服服务务器器接接收收到到数数据据时时,会会产产生生DataArrivalDataArrival事事件件。在该事件中可使用在该事件中可使用GetDataGetData方法接收数据。方法接收数据。33(2)客户机程序的开发模式)客户机程序的开发模式 首先设置好首先设置好首先设置好首先设置好RemoteHostRemoteHost属性,用来指向运行服务属性,用来指向运行服务属性,用来指向运行服务属性,用来指向运行服务器程序的远程计算机的的主机名或器程序的远程计算机的的主机名或器程序的远程计算机的的主机名或器程序的远程计算机的的主机名或IPIP地址。地址。地址。地址。设置设置设置设置RemotePortRemotePort属性,用来指向服务器程序的侦属性,用来指向服务器程序的侦属性,用来指向服务器程序的侦属性,用来指向服务器程序的侦听端口号。听端口号。听端口号。听端口号。使用使用使用使用ConnectConnect方法向服务器提出连接请求。方法向服务器提出连接请求。方法向服务器提出连接请求。方法向服务器提出连接请求。如果服务器接受了上述请求,客户机程序就会产生如果服务器接受了上述请求,客户机程序就会产生如果服务器接受了上述请求,客户机程序就会产生如果服务器接受了上述请求,客户机程序就会产生ConnectConnect事件,可以根据需要,在此事件中编写程事件,可以根据需要,在此事件中编写程事件,可以根据需要,在此事件中编写程事件,可以根据需要,在此事件中编写程序,比如使用序,比如使用序,比如使用序,比如使用MsgBoxMsgBox函数向用户提示函数向用户提示函数向用户提示函数向用户提示“连接已成连接已成连接已成连接已成功功功功”之类的信息。之类的信息。之类的信息。之类的信息。连接成功后,就可以根据需要使用连接成功后,就可以根据需要使用连接成功后,就可以根据需要使用连接成功后,就可以根据需要使用SendDataSendData方法方法方法方法向服务器发送数据了。向服务器发送数据了。向服务器发送数据了。向服务器发送数据了。当客户机程序接收的数据时,就会产生当客户机程序接收的数据时,就会产生当客户机程序接收的数据时,就会产生当客户机程序接收的数据时,就会产生DataArrivalDataArrival事件,可以用事件,可以用事件,可以用事件,可以用GetDataGetData方法接收数据。方法接收数据。方法接收数据。方法接收数据。34P215 习题习题 三、问答题三、问答题3.简述基于简述基于Winsock控件的开发过程。控件的开发过程。答:答:1 1)服务器程序的开发模式)服务器程序的开发模式服服务务器器程程序序必必须须设设置置好好LocalPortLocalPort属属性性,作作为为侦侦听听端端口口。使使用用ListenListen方方法法使使服服务务器器进进入入侦侦听听状状态态,等等待待客客户户机机的的连连接接请请求求。客客户户机机程程序序发发出出连连接接请请求求后后,将将触触发发服服务务器器程程序序的的ConnectionRequestConnectionRequest事事件件,该该事事件件得得到到一一个个参参数数RequestIDRequestID。服服务务器器程程序序使使用用AcceptAccept方方法法接接受受客客户户机机程程序序的的RequestIDRequestID请请求求。至至此此,服服务务器器程程序序就就可可以以使使用用SendDataSendData方方法法向向客客户户机机发发送送数数据据了了。当当服服务务器器接接收收到到数数据据时时,会会产产生生DataArrivalDataArrival事事件件。在在该该事事件件中中可可使使用用GetDataGetData方方法法接收数据。接收数据。35P215 习题习题 三、问答题三、问答题3.简述基于简述基于Winsock控件的开发过程。控件的开发过程。2 2)客户机程序的开发模式)客户机程序的开发模式首先设置好首先设置好RemoteHost属性,用来指向运行服务器程属性,用来指向运行服务器程序的远程计算机的的主机名或序的远程计算机的的主机名或IP地址。设置地址。设置RemotePort属性,用来指向服务器程序的侦听端口属性,用来指向服务器程序的侦听端口号。使用号。使用Connect方法向服务器提出连接请求。如果方法向服务器提出连接请求。如果服务器接受了上述请求,客户机程序就会产生服务器接受了上述请求,客户机程序就会产生Connect事件。连接成功后,就可以根据需要使用事件。连接成功后,就可以根据需要使用SendData方法向服务器发送数据了。当客户机程序方法向服务器发送数据了。当客户机程序接收的数据时,就会产生接收的数据时,就会产生DataArrival事件,可以用事件,可以用GetData方法接收数据。方法接收数据。36 8.3 8.3 其它网络应用程序设计其它网络应用程序设计 8.3.1 8.3.1 局域网中保证联网计算机时间同步局域网中保证联网计算机时间同步 当当采采用用客客户户机机/服服务务器器模模式式在在局局域域网网上上开开发发系系统统时时,必必须须保保证证所所有有计计算算机机的的时时钟钟时时间间一一致致。在在就就需需要要用用到到统统一一的的时时间间,以以便便协协调调工工作作,最最号号的的方方法法就就是是通通过过程程序序的的方方法法,解决时钟同步的问题。解决时钟同步的问题。37数据服务器数据服务器MyServer应用程序应用程序1应用程序应用程序2应用程序应用程序n这是某一应用系统的网络拓补结构,我们可以采用这是某一应用系统的网络拓补结构,我们可以采用Winsock控件解决众多客户机与数据服务器间的时间同步问题。控件解决众多客户机与数据服务器间的时间同步问题。38 解决时钟同步的基本思路是:首先解决时钟同步的基本思路是:首先精确调整服务器的时钟,然后,当客户精确调整服务器的时钟,然后,当客户机启动时与服务器连接,并与服务器机启动时与服务器连接,并与服务器“对时对时”。这样,每当执行应用程序时,。这样,每当执行应用程序时,客户机就会与服务器时钟同步了。客户机就会与服务器时钟同步了。394.如何保证局域网中联网的计算机同步运如何保证局域网中联网的计算机同步运行?行?答:答:解决时钟同步的基本思路是:首先精解决时钟同步的基本思路是:首先精确调整服务器的时钟,然后,当客户机确调整服务器的时钟,然后,当客户机启动时与服务器连接,并与服务器启动时与服务器连接,并与服务器“对对时时”。这样,每当执行应用程序时,客。这样,每当执行应用程序时,客户机就会与服务器时钟同步了。户机就会与服务器时钟同步了。P215 习题习题 三、问答题三、问答题 401.1.客户机程序的主要代码客户机程序的主要代码(1 1)与服务器建立连接)与服务器建立连接在客户机主窗体的在客户机主窗体的LoadLoad事件中连接服务器程序,具体方法与聊事件中连接服务器程序,具体方法与聊天程序相同。天程序相同。Private Sub Form_Load()设置聊天服务器的侦听端口设置聊天服务器的侦听端口 WinsockClient.RemotePort=10001 读取本机的读取本机的IP地址地址 txtClientIP.Text=WinsockClient.LocalIP根据根据txtServerIP文本框中输入的服务器文本框中输入的服务器IP,连接聊天服务器连接聊天服务器 WinsockClient.RemoteHost=txtServerIP.Text WinsockClient.Connect如果与服务器连接成功,则向用户提供下列信息如果与服务器连接成功,则向用户提供下列信息 MsgBox 你成功地与聊天服务器进行了连接你成功地与聊天服务器进行了连接,End Sub41(2)其它代码)其它代码Private Sub WinsockClient_DataArrival(ByVal bytesTotal)当收到服务器发来的数据时,完成以下工作:当收到服务器发来的数据时,完成以下工作:(1)日期数据类型接收数据;)日期数据类型接收数据;(2)设置本机的系统日期)设置本机的系统日期 定义一个日期类型数据变量定义一个日期类型数据变量 Dim MyDate As Date 以日期数据类型接受服务器日期数据以日期数据类型接受服务器日期数据 WinsockClient.GetData MyDate,VbDate 使本机的系统日期等于服务器日期使本机的系统日期等于服务器日期 Date=MyDateEnd Sub422.2.服务端程序主要代码服务端程序主要代码Private Sub WinsockServer_ConnectionRequest _ (ByVal RequestID As Long)当收到客户机的连接请求时,完成以下工作:当收到客户机的连接请求时,完成以下工作:(1)结束)结束Winsock的侦听状态;的侦听状态;(2)接受连接请求;)接受连接请求;(3)将服务器的系统日期发送给客户机)将服务器的系统日期发送给客户机 WinsockServer.Close WinsockServer.Accept RequestID 将将系统当前的时间系统当前的时间Date发送给提出请求的客户机发送给提出请求的客户机 WinsockServer.SendDateEnd Sub438.3.2 8.3.2 WebWeb浏览器浏览器1.1.一个简单的浏览器应用程序示例一个简单的浏览器应用程序示例(1 1)创创建建一一个个新新的的“标标准准EXE”EXE”工工程程。利利用用“工工程程”菜菜单单的的“部部件件”选选项项添添加加“Windows Windows Internet Internet Controls”Controls”以以获获得得对对WebBrowserWebBrowser控件的支持。控件的支持。(2 2)在在Form1Form1窗窗口口上上添添加加Text1Text1、Command1Command1和和WebBrowser1WebBrowser1等等控件。控件。(3 3)在)在Command1Command1控件的控件的ClickClick事件中,添加如下代码:事件中,添加如下代码:Private Sub Command1_Click()Private Sub Command1_Click()连接要浏览的网站地址连接要浏览的网站地址 WebBrowser1.Navigate Text1.TextWebBrowser1.Navigate Text1.Text End Sub End Sub(4 4)运运行行程程序序。在在Text1Text1输输入入网网址址后后,单单击击Command1Command1连连接接按按钮,即可进入有关网页。(演示)钮,即可进入有关网页。(演示)44 2.2.一个较完整的浏览器应用程序一个较完整的浏览器应用程序 一一个个真真正正的的浏浏览览器器(比比如如IEIE)至至少少需需要要后后退退(BackBack)、前前进进(ForwordForword)、停停止止(StopStop)、刷刷 新新(RefreshRefresh)、主主 页页(HomeHome)和和搜搜索索(SearchSearch)等等功功能能按按钮钮,还还能能够够显显示示当当前前网网页页的的下下载载速速度度。要要完完成成这这些些工工作作,就就必必须须深深入入学学习习WebBrowserWebBrowser控件的有关知识。控件的有关知识。45(1 1)LocationURLLocationURL和和LocationNameLocationName属性属性 LocationURLLocationURL属属 性性 返返 回回 装装 入入 网网 页页 的的 地地 址址,LocationNameLocationName属属性性则则返返回回当当前前装装入入网网页页的的标标题题。它它们均是只读的,不能通过们均是只读的