版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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远
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中三年级下学期物理《能源》教学课件
- 初中三年级上学期化学《制取氧气》课件
- 基于BS模式的同学录系统文献综述
- 火灾自动报警及消防联动系统工程技术交底记录模板剖析
- 《函数的单调性》教学课件第三课时
- 工业风机维护宝典
- 2024年抖音冲锋衣行业趋势洞察报告-30正式版
- 干挂瓷砖施工工艺
- 干货库火灾疏散演练方案模拟情景描述(分项)
- 尔雅-音乐鉴赏全部答案-周海宏(所有题目都有)97分
- 2024年全民健康生活方式宣传月专题讲座课件
- 部编版道德与法治一年级上册全册课件
- JTG F40-2004 公路沥青路面施工技术规范
- (高清版)DZT 0323-2018 硅灰石、透辉石、透闪石、长石矿产地质勘查规范(附修改单)
- 小学生自我介绍竖版
- 新教科版五年级科学上册全册课件(精品PPT)
- 螺栓拧紧力矩标准(经典实用)
- 集团资金结算中心组建方案.doc
- 冰醋酸安全技术说明书
- 食品召回通知书、召回公告、不合格食品承诺书
- 表格式教学设计模板
评论
0/150
提交评论