因特网客户端编程

什么是因特网客户端

因特网客户端可以简单的理解为用来传输数据的地方,数据在服务提供者和服务使用者之间传输。在某些情况下称为‘’生产者 = 消费者“。服务器就是生产者,提供服务,而客户端是使用服务,一般只有一个服务器(即进程 或主机等),但有多个消费者。

文件传输因特网协议

因特网最常见的事情就是传输文件,文件传输每时每刻都在发生。有很多协议可以用于因特网上传输文件。最流行的包括文件传输协议(FTP)、 UNIXUNIX 复制协议 (UUCP)、用于 Web 的超文本传输协议(HTTP)。另外,还有(UNIX 下的)远程文件复制 命令 rcp(以及更安全、更灵活的 scprsync)。

文件传输协议 – FTP

文件传输协议(File Transfer Protocol,FTP))由已故的 Jon Postel 和 Joyce Reynolds 开发,于1985年10月发布,FTP主要用于匿名下载公共文件。也可以用于两台计算机之间传输文件,特别是在使用windows进行工作,而文件存储系统使用UNIX的情况下,早在 Web 流行之前,FTP 就是在因特网上进行文件传 输以及下载软件和源代码的主要手段之一

FTP工作流程如下

  1. 客户端连接远程主机的TFP服务器。
  2. 客户端输入用户账号和密码(或“anonymous”和电子邮件地址 )。
  3. 客户端进行各种文件传输和信息查询操作。
  4. 客户端从远程 FTP 服务器退出,结束传输。

Python 和 FTP

在使用 Python 的 FTP 支持时,所需要做的只是导入 ftplib 模块,并实例化一个 ftplib.FTP 类对象。所有的 FTP 操作(如登录、传输文件和注销等)都要使用这个对象完成。 常用的FTP对象的类方法如下图片来源于Python核心编程这本书
图片来源于Python核心编程这本书

交互式 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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章