搭建FTP伺服器與客戶端(1) - Python實現
阿新 • • 發佈:2018-11-28
- FTP背景介紹:
FTP(File Transfer Protocol)協議,顧名思義為檔案傳輸協議。由已故的Jon Postel與Joyce Reynolds開發,並於1985年10月釋出。其底層基於TCP/IP協議。FTP目前主要用於匿名下載公共檔案,也可以在兩臺跨系統的計算機之間傳輸檔案。
為了實現FTP協議,很顯然需要同時構建FTP伺服器與客戶端。而伺服器與客戶端均通過兩個套接字(分別繫結在“命令埠”與“資料埠”)進行雙向通訊。對於資料埠,從伺服器的角度來看有兩種繫結模式,分別為“主動模式”與“被動模式”。主動模式下,伺服器的資料埠主動連線客戶端的資料埠;被動模式下,伺服器告知客戶端資料埠號,再由客戶端主動發起連線。
本篇內容將對FTP伺服器與客戶端進行簡單的構建,僅供參考!注意,搭建伺服器需要用到第三方庫pyftpdlib
- 搭建FTP伺服器:
1 # 搭建FTP伺服器 2 3 from pyftpdlib.authorizers import DummyAuthorizer 4 from pyftpdlib.handlers import FTPHandler 5 from pyftpdlib.servers import FTPServer 6 7 import socket #
View Code此時,最好記錄下主機的IP地址與埠號,方便後面搭建客戶端。
- 搭建FTP客戶端:
1 # 搭建FTP客戶端 2 3 from ftplib import FTP 4 5 import socket # 主要用於獲取當前主機IP地址 6 7 # 1. 例項化FTP物件, 並連線 8 ftp = FTP() 9 ftp.connect(socket.gethostbyname(socket.gethostname()), 9999) # 應該輸入伺服器IP地址. 由於此處客戶端與伺服器建立在同一臺主機上, 因此採用socket方法替代 10 11 # 2. 登入 12 ftp.login("xxx", "12345") 13 # 匿名登入方法, 注意: 匿名使用者的許可權較低 14 # ftp.login("anonymous") 15 16 # 3. 互動 17 # 檢視當前工作目錄, 及指定目錄下的內容 18 # print(ftp.pwd(), ftp.dir('./')) 19 # 下載檔案 20 ftp.retrbinary("RETR aaa.jpg", open("aaa.jpg", 'wb').write) 21 # 上傳檔案 22 ftp.storbinary("STOR scheme.txt", open("scheme.txt", 'rb')) 23 24 # 4. 退出 25 ftp.quit()
View Code也可以在瀏覽器位址列輸入url來訪問伺服器,如下:
ftp://ip:port/
其中,ip代表伺服器IP地址,port為相應的埠號(如上面的9999)。 - 參考:
https://www.cnblogs.com/huangxm/p/6274645.html