您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > Python课件PPT:第16章--网络编程的应用
第16章网络编程的应用本章内容16.1网络概要16.2socket模块16.3HTTP库16.4urllib库16.5ftplib模块16.6电子邮件服务协议16.7新闻群组16.8远程连接计算机16.1网络概要网络系统(networksystem)是使用OSI/ISO(OpenSystemsInterconnection/InternationalStandardsOrganization),国际标准化组织制定的开放系统互连七层模型(seven-layermodel)来定义。这七层模型代表七层的网络进程:物理层,数据链路层,网络层,传输层,会话层,表示层,以及应用层。现在的网络协议(包括TCP/IP)实际上会使用较少的层数,而不是OSI定义的完整层数。所以当您想要将TCP/IP会话映射到OSI模型时,您常会弄不清楚发生什么问题。因为有些层已经合并,有些则是已经删除。16.2socket模块16.2.1认识socket模块16.2.2创建socket连接16.2.1认识socket模块16.2.1认识socket模块socket又称套接字,应用程序通常通过套接字向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。socket模块提供了标准的网络接口,可以访问底层操作系统socket接口的全部方法。Python使用socket()函数来创建套接字,语法格式如下:socket.socket([family[,type[,protocol]]])16.2.2创建socket连接16.2.2创建socket连接下面使用socket模块的socket函数来创建一个socket对象。socket对象可以通过调用其他函数来设置一个socket服务。通过调用bind(hostname,port)函数来指定服务的port(端口)。然后调用socket对象的accept方法。该方法等待客户端的连接,并返回connection对象,表示已连接到客户端。16.3HTTP库16.3.1socketserver模块16.3.2server模块16.3.3client模块16.3.1socketserver模块16.3.1socketserver模块socketserver模块提供一个架构,来简化网络服务器的编写工作。用户不需要使用低级的socket模块,socketserver模块提供四个基本的server类:TCPServer,UDPServer,StreamRequestHandler以及DatagramRequestHandler。这些类处理同步的要求,每一个请求都必须在下一个请求开始前完成。但是如果是客户端需要长时间的计算,这些类就不适合。为了以个别的线程来处理要求,可以使用下列类:ThreadingTCPServer,ThreadingUDPServer,ForkingTCPServer以及ForkingUDPServer。StreamRequestHandler与DatagramRequestHandler类提供两个属性:self.rfile与self.wfile,可以用来在客户端应用程序读/写数据。16.3.2server模块http模块的子模块server提供各种HTTP服务。主要包括BaseHTTPServer类、CGIHTTPServer类与SimpleHTTPServer类。server模块定义两个基类,来操作基本的HTTP服务器(也称为网站服务器)。此模块以socketserver模块为基础,并且很少直接使用。server模块的第一个基类是HTTPServer类,其语法为:classHTTPServer((hostname,port),RequestHandlerClass)HTTPServer类由socketserver.TCPServer类派生。此类创建一个HTTPServer对象,并且监听(hostname,port),然后使用RequestHandlerClass来处理要求。16.3.3client模块16.3.3client模块client模块主要处理客户端的请求。client模块的HTTPConnection类创建并且返回一个connection对象。HTTPConnection类的语法如下:classHTTPConnection([hostname[,port]])如果没有设置参数port,默认值是80。如果所有的参数都没有设置,必须使用connect()方法来自行连接。16.4urllib库16.4.1request模块16.4.2parse模块16.4.1request模块16.4.1request模块request模块是使用socket来读取网络数据的接口,支持HTTP,FTP,以及gopher等连接。要读取一个网页文件,可以使用urlopen()方法。语法如下:urllib.request.urlopen(url[,data])其中参数url是一个URL字符串;参数data用来指定一个GET请求。16.4.2parse模块16.4.2parse模块parse模块解析URL字符串,并且返回一个元组:(addressingscheme,networdlocation,path,parameters,query,fragmentidentifier)。parse模块可以将URL分解成数个部分,然后再组合回来,并且可以将相对地址转换成绝对地址。16.5ftplib模块FTP(FileTransferProtocol)是一种在网络上传输文件的普遍方式,因为在大部分的操作系统上都有客户端的FTP与服务器端的FTP服务。服务器端的FTP可以同时使用在私有(private)的用户,与匿名(anonymous)的用户。私有的服务器端FTP只允许系统用户来连接,匿名的服务器端FTP则允许不需帐号即可以连接网络来传输文件。使用匿名的服务器端FTP,会产生安全性的问题。FTP提供一个控制端口与一个数据端口,在服务器端与客户端之间的数据传输使用独立的socket,以避免死机的问题。Python中默认安装的ftplib模块定义了FTP类,可用来创建一个FTP连接,用于上传或下载文件。FTP类的语法如下所示:classFTP([host[,user[,passwd[,acct]]]])其中host是主机名称,user是用户帐号,passwd是用户密码。16.6电子邮件服务协议16.6.1smptlib模块16.6.2poplib模块16.6.3imaplib模块16.6.1smptlib模块Python的smptlib模块提供SMTP协议的客户端接口,用来传输电子邮件到网络上的其他机器。smptlib模块定义一个SMTP类,用来创建一个SMTP连接。SMTP类的语法如下所示:classSMTP([host[,port]])其中参数host是主机名称。下列是SMTP类的实例变量的方法列表:⑴connect(host[,port]):连接到(host,port),port的默认值是25。⑵sendmail(from_addr,to_addrs,msg[,mail_options,rcpt_options]):送出电子邮件。from_addr是RFC822from-address字符串,to_addr是RFC822to-address字符串。msg是一个信息字符串。⑶quit():结束SMTP连接。16.6.2poplib模块16.6.2poplib模块Python的poplib模块提供POP3协议的客户端接口,用来从网络上接收电子邮件。poplib模块定义一个POP3类,用来创建一个POP3连接。POP3类的语法如下所示:classPOP3([host[,port]])其中host是主机名称,port的默认值是110。16.6.3imaplib模块16.6.3imaplib模块Python的imaplib模块提供IMAP协议的客户端接口。imaplib模块定义一个IMAP4类,用来创建一个IMAP连接。IMAP4类的语法如下所示:classIMAP4([host[,port]])其中host是主机名称,port的默认值是163。下列是IMAP4类的实例变量的方法列表:⑴fetch(message_set,message_parts):取出信息。⑵login(user,password):登录IMAP4服务器。⑶logout():注销IMAP4服务器,关闭连接。⑷search(charset,criterium[,...]):搜索邮件信箱找出符合的信息。⑸select([mailbox[,readonly]]):选择一个邮件信箱。16.7新闻群组nntplib模块提供客户端的NNTP协议的接口,NNTP(NetworkNewsTransferProtocol)是一个提供新闻群组(newsgroup)的服务。NNTP协议使用ASCII文字,在客户端与服务器端之间传输数据,同时也用来交换服务器间的新闻稿。nntplib模块定义一个NNTP类,用来创建一个NNTP连接。NNTP类的语法如下所示:classNNTP(host[,port[,user[,password[,readermode]]]])其中host是主机名称,port的默认值是119。16.8远程连接计算机telnetlib模块提供客户端的Telnet协议的服务,Telnet协议用来连接远程的计算机,通常使用通信端口23。创建好Telnet连接后,就可以通过Telnet接口在远程的计算机上执行命令。telnetlib模块定义一个Telnet类,用来创建一个Telnet连接。Telnet类的语法规则如下所示:classTelnet([host[,port]])其中host是主机名称,port的默认值是23。
本文标题:Python课件PPT:第16章--网络编程的应用
链接地址:https://www.777doc.com/doc-5339199 .html