因特網客戶端編程

什麼是因特網客戶端

因特網客戶端可以簡單的理解爲用來傳輸數據的地方,數據在服務提供者和服務使用者之間傳輸。在某些情況下稱爲‘’生產者 = 消費者“。服務器就是生產者,提供服務,而客戶端是使用服務,一般只有一個服務器(即進程 或主機等),但有多個消費者。

文件傳輸因特網協議

因特網最常見的事情就是傳輸文件,文件傳輸每時每刻都在發生。有很多協議可以用於因特網上傳輸文件。最流行的包括文件傳輸協議(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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章