《Delphi程序设计及实验指导》电子教案 第10章_第1页
《Delphi程序设计及实验指导》电子教案 第10章_第2页
《Delphi程序设计及实验指导》电子教案 第10章_第3页
《Delphi程序设计及实验指导》电子教案 第10章_第4页
《Delphi程序设计及实验指导》电子教案 第10章_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十章Internet编程10.1基本概念10.2

Socket编程10.3制作浏览器习

题10.1基本概念10.1.1计算机网络、Internet和Intranet1.计算机网络(1)定义

计算机网络是利用通信手段,把地理上分散的、能够以相互共享资源(包括硬件、软件和数据等)的方式有机地连接起来的、而各自又具备独立功能的计算机系统的集合。(2)主要功能数据通信资源共享实现分布式的信息处理提高计算机系统的可靠性和可用性10.1基本概念2.Internet

Internet的全称是Inter

Network,译为“因特网”,也称为国际互联网,简称为互联网。因特网是一个把全世界范围

内的众多计算机、人、数据库、软件和文件连接在一起的、通过一个共同的通信协议(TCP/IP协议)相互会话的网络。它能提供的服务主要有:电子邮件(E-mail)WWW(World

Wide

Web)服务文件传输服务(FTP)远程登录(Telnet)布告栏服务(BBS)10.1基本概念3.

Intranet

Intranet称为企业内部网,它是基于TCP/IP协议,使用环球网WWW工具、采用防止外界侵入的安全措施、为企业内部服务,并有Internet功能的企业内部网络。Intranet是一种使用Internet技术和标准组建的企业内部计算机网络,它可以与Internet互连,也可以不与Internet互连。

Intranet上的信息分为两类:企业内部信息和向社会公开的大众信息;企业内部信息不允许任何外部用户访问的信息,它主要用于企业内部的信息共享和协同工作。Intranet根据企业安全要求,设置防火墙、安全代理等,用以保护企业

内部信息,防止外界侵入。10.1基本概念10.1.2

HTML超文本标记语言HTML(Hyper

Text

MarkupLanguage)是制作Web信息的语言,是设计制作页面的基础。作为一种标记语言而不是编程语言,HTML主要用来创建与系统平台无关的文档。所以按照HTML语法规则建立的文档可以运行于不同硬件和操作系统平台上。10.1基本概念HTML文档的总体框架为:<!HTML版本信息说明><HTML><HEAD>头部元素、元素属性及内容</HEAD><BODY>正文元素、元素属性及内容</BODY></HTML>10.1基本概念10.1.3

TCP/IP协议、HTTP协议–为共享计算机网络的资源,在网上交换信息,需要实现不同系统中的实体间的通信。实体包括用户应用程

序、文件包传送、数据库管理系统、电子邮件设备及

终端等。计算机之间的数据通信必须遵守某种约定和

规程,这些约定和规程就是网络通信协议。Internet使用的通信协议是TCP/IP。超文本传输协议HTTP位于

TCP/IP协议的顶层,是专门为传输HTML页面设计的一种网络协议,即HTTP是HTML的基本协议,浏览器和服务器使用HTTP传输HTML文档。10.1基本概念1.TCP/IP协议

OSI(开放系统互联)是ISO制定的网络系统框架结构,是一切网络互联的基础模型。OSI参考模型把整个网络的通信功能划分为7个层次,每个层次完成各自的功能,通过各层间的接口和功能的组合与其相邻层连接,从而实现不同系统之间、不同结点之间的信息传输。表10-1是OSI参考模型中7个层次的名称和它们的主要功能。10.1基本概念表10-1

OSI参考模型中的7个层次层号层的名称英文主要功能7应用层ApplicationLayer与用户应用进程的接口,即相当于:做什么?6表示层PresentationLayer数据格式的转换,即相当于:对方看起来像什么?5会话层Session

Layer会话的管理和数据传输的同步,即相当于:轮到谁讲话和从何处讲?4运输层Transport

Layer从端到端经网络透明地传输报文,即相当于:对方在何处?3网络层Network

Layer分组传输和路由选择,即相当于:走哪条路可以到达该处?2数据链路层Data

LinkLayer在链路上无差错地传送一帧一帧的信息,即相当于:每一步应该怎么走?1物理层Physical

Layer将比特流送到物理介质上传送,即相当于:对上一层的每一步该怎样利用物理介质?10.1基本概念–TCP/IP拥有一套完整而系统的协议标准,它采用信息打包的方法来简化各种不同类型的计算机之间的通信传输。互联网中使用的协议对标准的OSI七层

协议进行了简化,它没有表示层和会话层,这两层的功能由应用层提供。TCP/IP一般分为4层,其功

能见表10-2所示,它的体系结构如图10-1所示。10.1基本概念SMTPDNSNSPFTPHTTPTelnetTCPUDPNVPICMPIPARPRARPEthernetARPANETPDNOthers图10-1

TCP/IP协议的体系结构10.1基本概念2.HTTP协议

超文本传输协议HTTP属于应用层协议,位于TCP/IP协议的顶层,在设计和使用HTTP协议时需要以TCP/IP协议中的其他协议为基础。例如,它要通过DNS进行域名解析,要建立TCP连接才能进行HTML文档传输。10.1基本概念表10-2

TCP/IP各层的主要功能层的名称功能应用层向用户提供一组常用的应用程序,如文件传输,电子邮件等传输层(TCP)提供端到端的数据传输服务网际层(IP)定义数据报,处理路由网络访问层接收网际层数据报,通过网络发送,从网络上接收数据送交IP层10.1基本概念10.1.4线程1.线程的概念

线程是Win32进程中的最小执行单元,线程由一个堆栈、CPU寄存器的状态和系统调度列表中的一个入口组成,每个线程都可以访问进程中的所有资源。线程与进程的差别主要体现在两个方面:

(1)线程和进程虽然都是系统的基本执行单元,线程的划分单位比进程小,因此支持多线程的系统比只支持多进程的系统并发度高。

(2)进程将内存作为自己独享的资源,每个进程都有自己的内存空间;而线程共享内存空间,并通过共享内存交换信息,因此有利于提高系统效率。10.1基本概念2.TThread类(1)TThread类

TThread类是直接从Tobject继承下来的,它是抽象类,即不能创建TThread类的实例,而只能创建TThread派生类的实例,即创建线程对象。(2)与VCL同步

大多数VCL都要求在任一时刻只允许一个线程访问它,因此在

Delphi中使用多线程,还有1个重要的注意事项,即对VCL访问只能在主线程中进行,这表明所有与用户交互的代码只能在主线程中。同时,Delphi为了使线程中的方法也能在主线程中执行,在TThread中设置了1个Synchronize()方法,该方法声明如下:10.1基本概念procedure

Synchronize(Method:TThreadMethod);

Synchronize()方法的参数就是用来传递需要在主线程执行的线程中的方法。例如若TestThread线程对象中有名为

PutResult()的方法需在主线程中执行,则在TestThread的Execute()方法中加入Synchronize(PutResult)语句即可。10.1基本概念3.线程的终止

当线程对象的Execute()方法执行完毕后,就认为该线程终止了,此时Delphi会自动调用一个标准例程EndThread(),该例程将再调用

API函数ExitThread(),由ExitThread()来清除线程所占用的栈。另外,虽然进程结束时将自动清除所有的线程对象,但线程对象不再使用时,最好在应用程序中及时清除,这样可以提高内存使用效率。线程终止时,将触发OnTerminate事件,所以可以利用在退出Execute()之前将FreeOnTerminate属性置为true的方法来及时清除线程对象。10.1基本概念4.线程同步

编写多线程应用程序时,需要控制好线程间的同步资源访问,以保证线程的安全运行。

所谓线程同步,简单说就是协调线程间的执行时序。

Win32

API提供了1组同步对象,包括信号量、互斥、临界

区和事件等,来解决线程的同步问题。Delphi分别将事件

对象和临界区对象封装为TEvent和TCriticalSection对象,使得事件和临界区更易使用。但如果要在Delphi程序中使

用信号量和互斥等对象,还必须借助于复杂的Win32

API函数。10.2

Socket编程

Socket(套接字)是在UNIX系统上提出来的,一开始主要是用于本地通信,但很快就应用到C/S体系上。

Microsoft公司在此基础上创建了Winsock组件,专门用于Windows接口,与Socket完全兼容。Winsock组件对

用户来说是不可见的,它提供了访问TCP和UDP网络服务的方便途径。Delphi、Visual

Basic、Visual

C++等的开发人员都可使用它。为编写客户或服务器应用程

序,不必了解TCP的细节或调用低级的Winsock

API,通过设置组件的属性并调用其方法就可轻易连接到一台远程机器上,并且还可双向交换数据。下面先介绍利用Socket进行编程的基本知识。10.2

Socket编程10.2.1工作原理–套接字Socket接口是TCP/IP网络的API。套接字接口定义了多个函数和例程,程序员可以使用这些函数和例程开发TCP/IP的应用程序。在使用Socket组件时,首先需要考虑使用什么协议,可以使用的协议包括TCP和UDP。两种协议之间的重要区别在于

它们的连接状态:TCP协议是有连接的协议,在开始数据传输之前,用户必须先建立连接;UDP协议是一种无连接协议,数据传输时,两台计算机之间没有明确的连接。10.2

Socket编程1.TTcpClient组件TTcpClient组件的主要属性如下:(1)Active属性:该属性表示组件是否处于激活状态。(2)BlockMode属性:该属性设置或返回阻塞模式。(3)RemoteHost属性:该属性用来指定远程计算机的IP地址。(4)RemotePort属性:该属性用来指定远程计算机的端口。10.2

Socket编程2.TTcpServer组件TTcpServer组件的主要属性:

(1)LocalHost属性:该属性用来指定客户端计算机的IP地址。(2)LocalPort属性:该属性用来指定客户端计算机端口。

这两个属性与TTcpClient组件的RemoteHost属性和

RemotePort属性的值相对应。TTcpServer组件的属性、方法和事件与TTcpClient组件的都很相似,10.2

Socket编程10.2.2建立客户端Socket1.组件属性设置

在Form中添加一个TTcpClient组件,应用程序就变成了一个TCP/IP客户端。TTcpClient组件的RemoteHost属性用于指定服务器的主机名,如http://,或者指定主机的IP地址,如,这两种方式是等价的。

要连接服务器,还要指定服务器端所使用的端口号。设置

RemotePort属性来指定端口号。10.2

Socket编程2.建立连接

指定了服务器端的主机名或IP地址以及端口号后,只要调用TTcpClient组件的Open方法或者把Active属性设为true,客户端Socket就会向服务器端Socket提出连接请求。如果

服务器端Socket正好处于监听状态,就会自动接受请求并

建立连接。10.2

Socket编程3.数据传输

一旦服务器端接受了客户端的连接请求,客户端就可以向服务器端发送数据。这时客户端与服务器端之间就拥有了

一个Socket,通过此Socket,双方实现通信。所以Socket属性很重要,它又拥有很多的方法,用其中的几个简单方法,就可以实现数据的发送与接收。客户端用SendTo方法来实

现数据传输。10.2

Socket编程4.断开连接

在客户端断开连接很简单,只要调用TTcpClient组件的

Close方法或Disconnect方法。10.2

Socket编程10.2.3建立服务器端Socket1.组件属性设置

把一个TTcpServer组件放到From上,应用程序就变成了一个TCP/IP服务器端。2.建立连接

指定了客户端的端口号后,就可以调用TTcpServer组件的

Open方法开始监听。如果在设计期把Active属性设为true,服务器端程序启动的时候就会自动进入监听状态。也就是

说,把Active属性设为true与调用Open是等价的。10.2

Socket编程3.数据传输

在服务器端接受数据,可以利用TTcpServer组件的

ReceiveFrom方法。4.断开连接

如果要断开连接,只要在服务器端用Close或者把Active属性设为false。但是这将导致所有对客户的连接都断开,并退出监听状态。如果在客户端用Close,将只断开该客户与服务器的连接,不影响其他客户的连接。10.2

Socket编程–【例10-1】设计一个程序要求具有以下功能:服务器在端口3000上接收客户连接,连接建立后,每个客户都以一个单独的线程执行服务器与客户端的数据传送。10.2

Socket编程服务器部分主要程序代码

procedure

TfrmSvr.TcpServer1Accept(Sender:TObject;ClientSocket:

TCustomIpClient);vars:string;DataThread:TClientDataThread;begin//生成线程对象DataThread:=TClientDataThread.Create(true);DataThread.TargetList:=memo1.Lines;("***接受连接***");("客户端主机"+ClientSocket.LookupHostName(ClientSocket.RemoteHost)+"("+ClientSocket.RemoteHost+"),发来消息:");10.2

Socket编程服务器部分主要程序代码(续)s:=ClientSocket.Receivelnwhile

s<>""

dobeginDataThread.ListBuffer.Add(s);s:=ClientSocket.Receiveln

;end;("***消息结束***");DataThread.Resume;end;10.2

Socket编程客户端程序代码procedure

TfrmClient.Button1Click(Sender:

TObject);vari:integer;begintryif

TcpClient1.connect

thenfor

i:=0

tO

Memo1.Lines.Count-1

doTcpClient1.sendln(memo1.Lines[i]);finallyTcpClient1.disconnect;end;end;10.3制作浏览器首先介绍一下浏览器的工作原理。Web应用包括Web服务器和Web客户端两部分,Web客户端就是通常所说的Web浏览器。每次用户要浏览一个网页,客户端的浏览器都要向服务器发出请求,服务器端接收到请求后响应请求,发送相应的网页到客户端的浏览器。在整个过程中,服务器和客户的通信都是基于HTTP协议,

客户端收到的网页也是用HTTP脚本语言书写的,所以客

户端还要对收到的网页进行解读,才能使网页正常显示给用户。10.3制作浏览器浏览器的主要功能如下:发送浏览网页的请求。接收服务器发来的网页数据。解读接收到的网页数据,将其显示给用户10.3制作浏览器10.3.1

TWebBrowse组件1.用途

TWebBrowser组件位于组件面板上的Internet选项卡上,如图10-3所示,提供了进行Web访问的功能,利用它可以通

过简单的编程实现Web资源的访问。2.主要属性Busy属性功能LocationURL属性LocationName属性

Offline属性10.3制作浏览器10.3.2界面设计新建一个工程PrjWeb.dpr。在默认窗体上按图10-7所示设计界面。窗体及其组件的属性设置值如表10-8所示,菜单如图10-8、10-9、10-10所示。10.3制作浏览器图10-7

WebBrowse界面设计10.3制作浏览器10.3.3代码编写(1)给窗体定义Public函数GotoPage,在程序的

Public处添加下面的代码:procedure

GotoPage(ReqURL:string)

;(*在程序中实现该函数,见下面的代码*)procedure

TFMain.GotoPage(ReqURL:string);beginWebBrowser1.Navigate(ReqUrl);end;10.3制作浏览器(2)给[前进]按钮添加如下代码:procedure

TFMain.Button1Click(Sender:

TObject);beginGotoPage(comboBox1.text);end;10.3制作浏览器(3)在ComboBox1输入或者选择网址后,按一下回车键即可打开该网页。可以通过处理ComboBox1组件的onkeypress事件来实现,代码如下:

procedure

TFMain.ComboBox1KeyPress(Sender:

TObject;var

Key:

Char);beginif

Key

=

#13

thenGotoPage(ComboBox1.Text);end;10.3制作浏览器(4)处理WebBrowserl的OnDownloadBegin和OnDownloadComplete事件,以显示一些状态信息,代码如下:procedure

TFMain.WebBrowser1DownloadBegin(Sender:

TObject);beginStatusBar1.Panels[0].text:="Downloading"+WebBrowser1.LocationURL+"...end;procedure

TFMain.WebBrowser1Downlo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论