1、DELPHI程序设计基础教程 第十一章 网络编程基础 第十一章 网络编程基础t本章学习导读t11.1 网络基础知识t11.2 建立Web浏览器t11.3 设计Web服务器t11.4 电子邮件系统的开发t本章小结2022年9月26日星期一DELPHI程序设计基础教程本章学习导读本章学习导读t计算机网络目前已经深入到人们生活中的各个角落,计算机网络技术也成了当前计算机技术发展的热点之一。那么,什么是网络编程呢?W.Richard.Stevens在他所著的UNIX网络编程中是这样解释的:网络编程,即是编写通过计算机网络与其他程序进行通信的这类程序。作为流行的编程工具,Delphi的网络编程功能非常强
2、大。在本章将首先介绍网络的基本知识,特别是网络的客户机/服务器模式以及网络协议;然后通过实例介绍Web浏览器、Web服务器以及电子邮件系统的原理和开发。2022年9月26日星期一DELPHI程序设计基础教程 计算机网络目前已经深入到人们生活中的各个角落,计算机网络技术也成了当前计算机技术发展的热点之一。那么,什么是网络编程呢?W.Richard.Stevens在他所著的UNIX网络编程中是这样解释的:网络编程,即是编写通过计算机网络与其他程序进行通信的这类程序。作为流行的编程工具,Delphi的网络编程功能非常强大。在本章将首先介绍网络的基本知识,特别是网络的客户机/服务器模式以及网络协议;然
3、后通过实例介绍Web浏览器、Web服务器以及电子邮件系统的原理和开发。11.1 网络基础知识2022年9月26日星期一DELPHI程序设计基础教程11.1 网络基础知识t1客户/服务器模式 计算机网络,顾名思义就是由多台计算机(或其它计算机网络设备)通过传输介质和软件物理(或逻辑)连接在一起组成的网络。在这个网络里,计算机与计算机之间可以完成资源共享、数据传输等任务。而在这个过程当中,存在着这样两种情况:一种是请求服务,另一种则是提供服务的,这种主从关系被称为客户/服务器模型(即Client/Server模型,常简写为C/S模型)。客户端可以通过网络向服务器端发出服务请求,当服务器端接收到请求
4、后做出响应,然后再通过网络将响应传回到客户端,如图11-1所示。2022年9月26日星期一DELPHI程序设计基础教程11.1 网络基础知识图11-1 客户/服务器模型 2022年9月26日星期一DELPHI程序设计基础教程11.1 网络基础知识t2计算机网络的体系结构 最常见的两种模型,一个是ISO-OSI体系结构的七层模型,一个是TCP/IP协议体系结构的四层模型。2022年9月26日星期一DELPHI程序设计基础教程图11-2 ISO/OSI参考模型11.1 网络基础知识2022年9月26日星期一DELPHI程序设计基础教程图 11-3 ISO-OSI与TCP/IP参考模型11.1 网络
5、基础知识2022年9月26日星期一DELPHI程序设计基础教程11.2 建立Web浏览器t WWW是一种典型的客户机/服务器方式,它一般采用Web浏览器作为WWW客户程序。而储存网页的计算机运行服务器程序,这个运行服务器程序的计算机常常被称为Web服务器。2022年9月26日星期一DELPHI程序设计基础教程11.2 建立Web浏览器t浏览器的工作原理浏览器的工作原理lWWW 的工作基于客户机/服务器计算模型的,Web浏览器向Web服务器发出请求,而Web服务器接收到请求后向Web浏览器发回其所请求的WWW文档,这个WWW文档通常被称为页面(page)。在这个过程当中,必须要解决这样几个问题:
6、l(1)怎样标识出分布在整个因特网上的WWW文档?l(2)万维网上的各种超链接是通过什么协议来实现的?l(3)怎样使用户可以方便地在万维网上找到自己所需要的信息?l(4)怎样使不同作者创作的不同风格的WWW文档都能在因特网上的各种计算机上显示出来,同时使用户清楚地知道在什么地方存在着超链接?2022年9月26日星期一DELPHI程序设计基础教程11.2 建立Web浏览器t万维网使用统一资源定位符URL(Uniform Resource Locator)来标识万维网上的各种文档,并且每个文档在整个因特网的范围内,标识符URL是惟一的,这样解决了第一个问题。为了解决第二个问题,万维网客户程序和万维
7、网服务器程序之间的交互要遵循严格的协议,这个协议就是超文本传送协议HTTP(Hypertext Transfer Protocol)。HTTP是一个应用层协议,它使用TCP连接进行可靠的传送。为了使用户可以方便地在万维网上找到自己所需要的信息,用户可使用各种搜索工具。第四个问题的解决,万维网使用了超文本标记语言HTML(Hypertext Markup Language),这样只要使用了HTML语言编写的WWW文档都可以在因特网上的计算机上显示出来,WWW文档的设计者也可以很方便地用超链接从一个WWW文档连接到因特网上的其它WWW页面上了。2022年9月26日星期一DELPHI程序设计基础教程
8、11.2 建立Web浏览器l统一资源定位符URL 统一资源定位符URL是用于完整地描述Internet上网页和其他资源的地址的一种标识方法。Internet上的每一个网页都具有一个唯一的名称标识,通常称之为URL地址,简单地说,URL就是Web地址,俗称“网址”。2022年9月26日星期一DELPHI程序设计基础教程l超文本传送协议HTTP HTTP协议(Hypertext Transfer Protocol,超文本传输协议)是应用层的一个协议,用于从WWW服务器传输超文本到本地浏览器。lwinsock通信机制 根据传输数据类型的不同,常用的Socket类型有两种:流式Socket(STREA
9、M SOCKET)和数据报式Socket(DATAGRAM SOCK)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。2022年9月26日星期一DELPHI程序设计基础教程11.2 建立Web浏览器t浏览器的设计浏览器的设计lDelphi具有强大的网络编程功能,在进行设计之前,先介绍一下Delphi提供的用于设计Web浏览器的组件TWebBrowser组件。lTWebBrowser组件位于Internet组件页中,使用该组件开发的应用程序可以浏览网页、查看文档、数据下载等功能。2022年9月26日
10、星期一DELPHI程序设计基础教程11.3 设计Web服务器t Web程序的基本结构仍然是客户/服务器模型。客户端为Web浏览器,在上一节我们已经介绍过了。服务器端为Web服务器,在这一节里我们将介绍Web服务器的工作原理以及在应用层有哪些应用,dephi给我们提供了哪些组件来实现这些应用。2022年9月26日星期一DELPHI程序设计基础教程11.3 设计Web服务器tWebWeb服务器工作原理服务器工作原理当客户需要服务器提供服务时,会通过网络向服务器发出一个连接请求,而此时Web服务器在网络中处于侦听状态,当这个请求通过网络被Web服务器得到以后,Web浏览器与Web服务器建立起连接。W
11、eb浏览器再向Web服务器提出服务请求,Web服务器根据请求做出响应,响应的结果再从网络传输给Web浏览器。当通话结束后,Web服务器断开与Web浏览器的连接。2022年9月26日星期一DELPHI程序设计基础教程11.3 设计Web服务器t在上一节已经介绍了Winsock通信机制,并且讲到了根据传输数据类型的不同,常用的Socket类型有两种:一种是面向连接的流式Socket,另一种是无连接的数据报式Socket。2022年9月26日星期一DELPHI程序设计基础教程11.3 设计Web服务器t从图11-13我们可以看出,对于面向连接的通信,服务器端首先创建Socket,然后将其与本地的IP
12、地址和通信端口绑定(Bind),并对绑定的端口进行监听(Listen),一旦服务器监听到客户端的通信请求(Connect)后,返回一个新的套接字与用户连接,而原有的套接字继续放在网络中处于监听状态,以接受其他用户的连接请求。然后读出(Accept)客户端的发送信息,完成相应处理(Recv/Send)后再写入处理结果。客户端需要通信时,创建本地Socket并完成与服务器端的连接(Connect),即可写入(Send)或读出(Recv)通信数据。但客户端完成通信后关闭套接字(Socket),并通知服务器,然后关闭连接,结束此次通信。2022年9月26日星期一DELPHI程序设计基础教程11.3 设
13、计Web服务器t从图11-14中可以看出,采用无连接的套接字进行通信,由于在数据报中已包含对端地址,无连接通信的双方在创建了本地Socket并与IP地址和通信端口绑定(Bind)后,即可接收(Recv)或发送(Send)数据。2022年9月26日星期一DELPHI程序设计基础教程11.3 设计Web服务器t应用层协议控件及应用应用层协议控件及应用t应用层是TCP/IP协议模型中的最高层,它直接面对用户的具体应用。TCP/IP协议模型在这一层有着很多协议来支持不同的应用,许多大家所熟悉的Internet的应用的实现都离不开这些协议。如我们进行万维网(WWW)访问用到了超文本传送协议(hyper
14、text transfer protocol,HTTP)、文件传输用到了文件传送协议(file transfer protocol,FTP)、电子邮件发送用到了简单邮件传送协议(simple mail transfer protocol,SMTP)、域名的解析用到了域名系统(domain name system,DNS);、远程登录用到了远程登录协议(Telnet),都是属于TCP/IP应用层的。2022年9月26日星期一DELPHI程序设计基础教程11.3 设计Web服务器tHTTPHTTP协议协议 在11.2.1节中已经介绍过HTTP协议,在Delphi7的Indy组件集当中,TIdHTT
15、P组件和TIdHTTPServer组件实现超文本传输协议。2022年9月26日星期一DELPHI程序设计基础教程11.3 设计Web服务器tTelnetTelnet协议协议 Telnet是一个简单的远程终端协议,使用的是客户/服务器方式。用户在用Telnet可以登录到远端的另外一个主机上。使用Telnet协议进行远程登陆时需要满足以下条件:在本的计算机上必须装有包含Telnet协议的客户程序;必须知道远程主机的IP地址或域名;必须知道登录标识与口令。Telnet以前应用得很多,现在有由于PC机的功能越来越强,用户已较少使用了。但作为应用层的一个主要协议,Delphi还是对Telnet协议提供了
16、很好的支持。在Delphi中使用TIdTelnet组件和TIdTelnetServer组件实现Telnet。2022年9月26日星期一DELPHI程序设计基础教程11.3 设计Web服务器tFTPFTP协议协议 与大多数Internet服务一样,FTP是一个基于客户/服务器模型的应用层协议。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。TIdFTP和TIdFTPServer是Indy9中专门支持FTP协议的组件。使用这两个组件既可以开发FTP客户端程序,又可以开发
17、出功能完善的FTP服务器软件。2022年9月26日星期一DELPHI程序设计基础教程11.4 电子邮件系统的开发t电子邮件是当前网络当中的一个重要应用。用户在发送电子邮件的时候,电子邮件首先被发送到ISP(Internet Service Provider,互联网服务提供商)的邮件服务器,并被放在收信人邮箱中,收信人上网后,可到ISP的邮件服务器进行读取。从这可以看出,电子邮件系统应包括电子邮件收发程序、邮件服务器以及电子邮件使用的协议。在应用层,SMTP协议是用来解决电子邮件发送的问题的,POP3(Post Office Protocol 3,邮局协议的第3个版本)和IMAP(Interne
18、t Message Access Protocol,因特网报文存取协议)是用来解决电子邮件接收的问题的。2022年9月26日星期一DELPHI程序设计基础教程11.4 电子邮件系统的开发tTIdSMTPTIdSMTP Delphi7提供了一些组件,封装了SMTP协议,用来开发SMTP客户端程序。主要的组件有TIdSMTP、TIdMessage和TIdAttachment。利用这些组件可以快速地开发一个电子邮件的发送软件。tTIdPOP3TIdPOP3 TIdPOP3组件用于实现POP3协议的客户端部分,从邮件服务器获得E-Mail信息并将其返回到用户计算机上。2022年9月26日星期一DELP
19、HI程序设计基础教程 在本章里主要介绍了网络编程的基础知识,包括网络的基础知识,以及如何使用Delphi进行网络开发。包括网络的客户/服务器模式,以及计算机网络的体系结构。网络中的两个终端,要想实现通信,必须遵循相同的规则,这个规则我们把它叫做协议。从硬件到软件,协议是非常多的,为了将复杂的网络问题简单化,计算机网络采用了分层的方法,将复杂繁多的网络协议按一定的分层标准分成若干层。目前最常见的两种模型,一个是ISO-OSI体系结构的七层模型,一个是TCP/IP协议体系结构的四层模型。而TCP/IP协议模型是目前事实上的标准。本章小结 2022年9月26日星期一DELPHI程序设计基础教程 WW
20、W是网络中的一个重要应用,在本章里,介绍了Web浏览器的工作原理,其中介绍到了HTTP协议以及Winsock通信机制。并介绍了如何利用Delphi提供的TWebBrowser组件设计一个Web浏览器。WWW是一个客户/服务器模式的应用,所以接下来介绍了Web服务器的工作原理。应用层是网络协议中的最高层,直接面向用户的应用,在本章介绍了应用层的常用协议,包括介绍了Delphi用来实现这些协议所用到的组件。本章小结 2022年9月26日星期一DELPHI程序设计基础教程 在最后介绍了应用层的两个比较重要的协议SMTP协议和POP3协议。这两个协议是用来实现电子邮件系统的。在本章介绍了Delphi中用来实现这两个协议的组件TIdSMTP组件和TIdPOP3组件。本章小结