[PYTHON] 核心编程笔记(17.Python网络客户端编程)
2013-12-25 17:02
393 查看
17.1 什么是因特网客户端?
17.2 文件传输
17.2.1 文件传输因特网协议
流行的有文件传输协议(FTP),Unix-to-Unix复制协议(UUCP),以及网页的超文本传
输协议(HTTP),另外,还有(Unix下的)远程文件复制指令scp(以及更安装,更灵活的
scp和rsync)
17.2.2 文件传输协议(FTP)
展示这个协议工作流程如下:
1.客户端连接远程FTP服务器
2.客户端输入用户名和密码(或"anonymous"和e-mail地址)
3.客户端做各种文件传输和信息查询操作
4.客户端登出远程FTP服务器,结束通讯
17.2.3 Python和FTP
流程:
1.连接到服务器
2.登陆
3.发出服务请求(有可能返回信息)
4.退出
from ftplib import FTP
f = FTP('ftp.python.org')
f.login('anonymous','guess@who.org')
.
.
f.quit()
17.2.4 ftplib.FTP类方法
方法描述
login(user='anonymous'
,passwd='',acct='')登陆到FTP服务器,所有的参数都是可选的
pwd()得到当前工作目录
cwd(path)把当前工作目录设置为path
dir([path[,...[,cb]]])显示path目录里的内容,可选参数cb是一个回
调函数,他会被传给retrlines()方法
nlst([path[,...]])与dir()类似,但返回一个文件名的列表,而不
是显示这些文件名
retrlines(cmd) [, cb])给定FTP命令(如"RETR filename").用于下载
文本文件,可选的回调函数cb用于处理文件的
每一行
retrbinary(cmd, cb[, bs=8192[, ra]])
与retrlines()类似,只是这个指令处理二进
制文件,回调函数cb用于处理每一块(块大小
默认8K)下载的数据
storlines(cmd, f)给定FTP命令(如"STOR filename"),以上传文
本文件,要给定一个文件对象f
storbinary(cmd, f[, bs=8192])与storlines()类似,只是这个指令处理二进
制文件,要给定一个文件对象f,上传块大小bs
默认为8kbs=8192
rename(old, new)把远程文件old改名为new
delete(path)删除位于path的远程文件
mkd(directory)创建远程目录
rmd(directory)删除远程目录
quit()关闭连接并退出
17.2.5 交互式FTP示例
注:保证本机开启ftp服务
>>> from ftplib import FTP
>>> f = FTP('localhost')
>>> f.login('test1','12344321')
'230 Login successful.'
>>> f.dir()
-rw-r--r-- 1 0 0 0 Dec 20 14:34 1
-rw-r--r-- 1 0 0 0 Dec 20 14:34 2
-rw-r--r-- 1 0 0 0 Dec 20 14:34 3
-rw-r--r-- 1 0 0 0 Dec 20 14:34 4
-rw-r--r-- 1 0 0 0 Dec 20 14:34 5
>>> f.quit()
'221 Goodbye.'
17.2.6 客户端FTP程序举例
例,下载网站中最新版本的文件
# vi getLateestFTP.py
---------------------------------------
#!/usr/bin/env python
import ftplib
import os
import socket
HOST = 'ftp.mozilla.org'
DIRN = 'pub/mozilla.org/webtools'
FILE = 'bugzilla-LATEST.tar.gz'
def main():
try:
f = ftplib.FTP(HOST)
except (socket.error, socket.gaierror), e:
print 'ERROR: cannot reach "%s"' % HOST
return
print '*** Connected to host "%s"' % HOST
try:
f.login()
except ftplib.error_perm:
print 'ERROR: cannot login anonymously'
f.quit()
return
print '*** Logged in as "anonymous"'
try:
f.cwd(DIRN)
except ftplib.error_perm:
print 'ERROR: connot CD to "%s"' % DIRN
f.quit()
return
print '*** Changed to "%s" folder' % DIRN
try:
f.retrbinary('RETR %s' % FILE,open(FILE, 'wb').write)
except ftplib.error_perm:
print 'ERROR: connot read file "%s"' % FILE
os.unlink(FILE)
else:
print '*** Downloaded "%s" to CWD' % FILE
f.quit()
return
if __name__ == '__main__':
main()
---------------------------------------
# python getLatestFTP.py
*** Connected to host "ftp.mozilla.org"
*** Logged in as "anonymous"
*** Changed to "pub/mozilla.org/webtools" folder
*** Downloaded "bugzilla-LATEST.tar.gz" to CWD
17.2.7 FTP的其他方面
Python同时支持主动和被动模式
以下是一些典型的FTP客户端类型:
命令行客户端程序
GUI客户端程序
网页浏览器
定制程序
17.3 网络新闻
17.3.1 Usenet 与新闻组
13.3.2 网络新闻传输协议(NNTP)
17.3.3 Python和NNTP
17.3.4 nntplib.NNTP类方法
17.3.5 交互式NNTP举例
17.3.6 客户端程序NNTP举例
17.3.7 NNTP的其他方面
17.4 电子邮件
17.4.1 E-mail系统组件和协议
17.4.2 发送E-mail
要发送e-mail,你的邮件客户端一定要连接到一个MTA(消息传输代理),通过某种协
议通讯,MTA之间通讯所使用的协议叫消息传输系统(MTS),只有两个MTA都使用这个
协议时,才能进行通讯.
SMTP
一些实现了SMTP的著名MTA包括:
开源MTA:
Sendmail
Postfix
Exim
qmail
商业MTA
Microsoft Exchange
Lotus Notes Domaino Mail Server
SMTP是在因特网上MTA之间用于消息交换的最常用的MTS,它被MTA用来把e-mail从
一台主机传送到另一台主机,在你发e-mail的时候,你必须连接到一个外部的SMTP
服务器,这是,你的邮件程序是SMTP客户端,你的SMTP服务器为你的消息的第一跳板
17.4.3 Python和SMTP
1.连接到服务器
2.登陆(如果需要的话)
3.发出服务请求
4.退出
下面是一些Python的伪代码:
from smtplib import SMTP
n = SMTP('smtp.yourdomain.com')
...
n.quit()
17.4.4 smtplib.SMTP方法
SMTP对象的方法
方法描述
Sendmail
(from,to,msg[,
mopts,ropts])把msg从from发送给to(列表或元祖).ESMTP设置(mopts)和收件人设置( ropts)为可选
quit()关闭连接,然后退出
login(user, passwd)使用user用户和passwd密码登陆到SMTP服务器
17.4.5 交互式SMTP示例:
17.4.6 SMTP的其他方面
17.4.7 接收E-mail
17.4.8 POP和IMAP
17.4.9 Python和POP3
17.4.10 交互式POP3举例
17.4.10 poplib.POP3类方法
17.4.12 客户端程序SMTP和POP3举例
17.5 相关模块
17.5.2 其他网络协议
模块描述
ftplibFTP协议客户端
gopherlibGopher协议客户端
httplibHTTP和HTTPS协议客户端
imaplibIMAP4协议客户端
nntplibNNTP protocol client
poplibPOP3协议客户端
smtplibSMTP协议客户端
telnetlibTelnet协议客户端类
17.2 文件传输
17.2.1 文件传输因特网协议
流行的有文件传输协议(FTP),Unix-to-Unix复制协议(UUCP),以及网页的超文本传
输协议(HTTP),另外,还有(Unix下的)远程文件复制指令scp(以及更安装,更灵活的
scp和rsync)
17.2.2 文件传输协议(FTP)
展示这个协议工作流程如下:
1.客户端连接远程FTP服务器
2.客户端输入用户名和密码(或"anonymous"和e-mail地址)
3.客户端做各种文件传输和信息查询操作
4.客户端登出远程FTP服务器,结束通讯
17.2.3 Python和FTP
流程:
1.连接到服务器
2.登陆
3.发出服务请求(有可能返回信息)
4.退出
from ftplib import FTP
f = FTP('ftp.python.org')
f.login('anonymous','guess@who.org')
.
.
f.quit()
17.2.4 ftplib.FTP类方法
方法描述
login(user='anonymous'
,passwd='',acct='')登陆到FTP服务器,所有的参数都是可选的
pwd()得到当前工作目录
cwd(path)把当前工作目录设置为path
dir([path[,...[,cb]]])显示path目录里的内容,可选参数cb是一个回
调函数,他会被传给retrlines()方法
nlst([path[,...]])与dir()类似,但返回一个文件名的列表,而不
是显示这些文件名
retrlines(cmd) [, cb])给定FTP命令(如"RETR filename").用于下载
文本文件,可选的回调函数cb用于处理文件的
每一行
retrbinary(cmd, cb[, bs=8192[, ra]])
与retrlines()类似,只是这个指令处理二进
制文件,回调函数cb用于处理每一块(块大小
默认8K)下载的数据
storlines(cmd, f)给定FTP命令(如"STOR filename"),以上传文
本文件,要给定一个文件对象f
storbinary(cmd, f[, bs=8192])与storlines()类似,只是这个指令处理二进
制文件,要给定一个文件对象f,上传块大小bs
默认为8kbs=8192
rename(old, new)把远程文件old改名为new
delete(path)删除位于path的远程文件
mkd(directory)创建远程目录
rmd(directory)删除远程目录
quit()关闭连接并退出
17.2.5 交互式FTP示例
注:保证本机开启ftp服务
>>> from ftplib import FTP
>>> f = FTP('localhost')
>>> f.login('test1','12344321')
'230 Login successful.'
>>> f.dir()
-rw-r--r-- 1 0 0 0 Dec 20 14:34 1
-rw-r--r-- 1 0 0 0 Dec 20 14:34 2
-rw-r--r-- 1 0 0 0 Dec 20 14:34 3
-rw-r--r-- 1 0 0 0 Dec 20 14:34 4
-rw-r--r-- 1 0 0 0 Dec 20 14:34 5
>>> f.quit()
'221 Goodbye.'
17.2.6 客户端FTP程序举例
例,下载网站中最新版本的文件
# vi getLateestFTP.py
---------------------------------------
#!/usr/bin/env python
import ftplib
import os
import socket
HOST = 'ftp.mozilla.org'
DIRN = 'pub/mozilla.org/webtools'
FILE = 'bugzilla-LATEST.tar.gz'
def main():
try:
f = ftplib.FTP(HOST)
except (socket.error, socket.gaierror), e:
print 'ERROR: cannot reach "%s"' % HOST
return
print '*** Connected to host "%s"' % HOST
try:
f.login()
except ftplib.error_perm:
print 'ERROR: cannot login anonymously'
f.quit()
return
print '*** Logged in as "anonymous"'
try:
f.cwd(DIRN)
except ftplib.error_perm:
print 'ERROR: connot CD to "%s"' % DIRN
f.quit()
return
print '*** Changed to "%s" folder' % DIRN
try:
f.retrbinary('RETR %s' % FILE,open(FILE, 'wb').write)
except ftplib.error_perm:
print 'ERROR: connot read file "%s"' % FILE
os.unlink(FILE)
else:
print '*** Downloaded "%s" to CWD' % FILE
f.quit()
return
if __name__ == '__main__':
main()
---------------------------------------
# python getLatestFTP.py
*** Connected to host "ftp.mozilla.org"
*** Logged in as "anonymous"
*** Changed to "pub/mozilla.org/webtools" folder
*** Downloaded "bugzilla-LATEST.tar.gz" to CWD
17.2.7 FTP的其他方面
Python同时支持主动和被动模式
以下是一些典型的FTP客户端类型:
命令行客户端程序
GUI客户端程序
网页浏览器
定制程序
17.3 网络新闻
17.3.1 Usenet 与新闻组
13.3.2 网络新闻传输协议(NNTP)
17.3.3 Python和NNTP
17.3.4 nntplib.NNTP类方法
17.3.5 交互式NNTP举例
17.3.6 客户端程序NNTP举例
17.3.7 NNTP的其他方面
17.4 电子邮件
17.4.1 E-mail系统组件和协议
17.4.2 发送E-mail
要发送e-mail,你的邮件客户端一定要连接到一个MTA(消息传输代理),通过某种协
议通讯,MTA之间通讯所使用的协议叫消息传输系统(MTS),只有两个MTA都使用这个
协议时,才能进行通讯.
SMTP
一些实现了SMTP的著名MTA包括:
开源MTA:
Sendmail
Postfix
Exim
qmail
商业MTA
Microsoft Exchange
Lotus Notes Domaino Mail Server
SMTP是在因特网上MTA之间用于消息交换的最常用的MTS,它被MTA用来把e-mail从
一台主机传送到另一台主机,在你发e-mail的时候,你必须连接到一个外部的SMTP
服务器,这是,你的邮件程序是SMTP客户端,你的SMTP服务器为你的消息的第一跳板
17.4.3 Python和SMTP
1.连接到服务器
2.登陆(如果需要的话)
3.发出服务请求
4.退出
下面是一些Python的伪代码:
from smtplib import SMTP
n = SMTP('smtp.yourdomain.com')
...
n.quit()
17.4.4 smtplib.SMTP方法
SMTP对象的方法
方法描述
Sendmail
(from,to,msg[,
mopts,ropts])把msg从from发送给to(列表或元祖).ESMTP设置(mopts)和收件人设置( ropts)为可选
quit()关闭连接,然后退出
login(user, passwd)使用user用户和passwd密码登陆到SMTP服务器
17.4.5 交互式SMTP示例:
17.4.6 SMTP的其他方面
17.4.7 接收E-mail
17.4.8 POP和IMAP
17.4.9 Python和POP3
17.4.10 交互式POP3举例
17.4.10 poplib.POP3类方法
17.4.12 客户端程序SMTP和POP3举例
17.5 相关模块
17.5.2 其他网络协议
模块描述
ftplibFTP协议客户端
gopherlibGopher协议客户端
httplibHTTP和HTTPS协议客户端
imaplibIMAP4协议客户端
nntplibNNTP protocol client
poplibPOP3协议客户端
smtplibSMTP协议客户端
telnetlibTelnet协议客户端类
相关文章推荐
- python 网络编程笔记(一)-WEB客户端
- [python]网络编程基础学习笔记(二)Web客户端访问
- Python学习笔记17:网络客户端编程
- python 网络编程基础学习笔记(1)-网络客户端-socket
- 17 网络客户端编程 - 《Python 核心编程》
- Python 核心编程笔记_Chapter_3 Note_2 模块结构布局
- Python核心编程笔记 - 第11章 函数式编程
- Python学习笔记(十)——Python 网络编程
- python核心编程--笔记
- Python 核心编程笔记_Chapter_5_Note_1 数据类型及相关运算
- Python核心编程笔记----注释
- 笔记_计算机网络_Python socket编程
- python网络编程服务器与客户端
- [PYTHON] 核心编程笔记(13.Python面向对象编程) 推荐
- 【网络编程笔记】简单的TCP协议 socket编程(C语言版服务器和客户端)
- python核心编程--笔记(不定时跟新)(转)
- python核心编程学习笔记-(第1天)-运行python
- python核心编程学习笔记-2016-09-18-01-数据库编程(三)
- QT5网络编程笔记 单客户端与多客户端
- Python网络编程 9.1 HTTP客户端方法、封帧、状态码、缓存