因特网客户端编程
什么是因特网客户端
因特网客户端可以简单的理解为用来传输数据的地方,数据在服务提供者和服务使用者之间传输。在某些情况下称为‘’生产者 = 消费者“。服务器就是生产者,提供服务,而客户端是使用服务,一般只有一个服务器(即进程 或主机等),但有多个消费者。
文件传输因特网协议
因特网最常见的事情就是传输文件,文件传输每时每刻都在发生。有很多协议可以用于因特网上传输文件。最流行的包括文件传输协议(FTP)、 UNIX 到 UNIX 复制协议 (UUCP)、用于 Web 的超文本传输协议(HTTP)。另外,还有(UNIX 下的)远程文件复制 命令 rcp(以及更安全、更灵活的 scp 和 rsync)。
文件传输协议 – FTP
文件传输协议(File Transfer Protocol,FTP))由已故的 Jon Postel 和 Joyce Reynolds 开发,于1985年10月发布,FTP主要用于匿名下载公共文件。也可以用于两台计算机之间传输文件,特别是在使用windows进行工作,而文件存储系统使用UNIX的情况下,早在 Web 流行之前,FTP 就是在因特网上进行文件传 输以及下载软件和源代码的主要手段之一
FTP工作流程如下
- 客户端连接远程主机的TFP服务器。
- 客户端输入用户账号和密码(或“anonymous”和电子邮件地址 )。
- 客户端进行各种文件传输和信息查询操作。
- 客户端从远程 FTP 服务器退出,结束传输。
Python 和 FTP
在使用 Python 的 FTP 支持时,所需要做的只是导入 ftplib 模块,并实例化一个 ftplib.FTP 类对象。所有的 FTP 操作(如登录、传输文件和注销等)都要使用这个对象完成。 常用的FTP对象的类方法如下
交互式 FTP 示例
''''
代码前几行导入要用的模块(主要用于抓取异常对象),并设置一些常量。
'''
import ftplib
import os
import socket
HOST = 'ftp.mozilla.org'
DIRN = 'pub/mozilla.org/webtools'
FILE = 'bugzilla-LATEST.tra.gz'
def main():
try:
f = ftplib.FTP(HOST) #:创建一个 FTP 对象,尝试连接到 FTP 服务器
except (socket.error, socket.gaierror) as e:
print('ERROR: cannot reach "%s' % HOST)
return
print('*** Connected to host “%s”' % HOST)
try:
f.login() # 接着尝试用“anonymous”登录,
except ftplib.error_perm:
print('ERROR: cannot login anonmously')
f.quit()
return
print('*** Logged in as anonmously')
try:
f.cwd(DIRN) #就是转到发布目录
except ftplib.error_perm:
print('ERROR: cannot CD to "%s"' %DIRN)
f.quit()
return
print('*** Changed to "%s"' % DIRN)
try:
f.retrbinary('RETR "%s"'% FILE,open(FILE,'wb').write) # 下载文件(
except ftplib.error_perm:
print('ERROR: cannot reas file "%s"' %FILE)
os.unlink()
return
else:
print('*** Downloaded "%s" to CWD' % FILE)
f.quit()
if __name__ == '__main__':
main()