016 Rust 網路程式設計,FTP 示例

linghuyichong發表於2020-05-18

原始碼地址:github.com/anonymousGiga

本示例使用Rust編寫一個FTP的客戶端,在客戶端中進行下載和上傳的演示。

  • 在Cargo.toml檔案中新增:

    [dependencies]
    ftp = "3.0.1"
  • 編寫src/main.rs如下:

    use std::str;
    use std::io::Cursor;
    use ftp::FtpStream;
    fn main() {
      let mut ftp_stream = FtpStream::connect("127.0.0.1:21").unwrap();
      let _ = ftp_stream.login("andy1", "1").unwrap();
    
      println!("Current directory: {}", ftp_stream.pwd().unwrap());
    
      let _ = ftp_stream.cwd("upload").unwrap();
    
      let remote_file = ftp_stream.simple_retr("./test").unwrap();
      println!("Read file with contents\n{}\n", str::from_utf8(&remote_file.into_inner()).unwrap());
    
      let mut reader = Cursor::new("Hello from the Rust \"ftp\" crate!".as_bytes());
      let _ = ftp_stream.put("hello", &mut reader);
      println!("Successfully wrote hello");
    
      let _ = ftp_stream.quit();
    }

按照上一節《015 Rust網路程式設計,FTP介紹》中搭建ftp server,並且建立使用者andy1,同時在ftp_server/andy1目錄下建立upload資料夾,在資料夾放置一個test檔案。
在當前工程目錄下放置一個hello檔案。

執行程式:

cargo run

在ftp_server/andy1/upload下會發現多了hello檔案,而在終端中則會列印ftp_server/andy1/upload/test檔案的內容。

本作品採用《CC 協議》,轉載必須註明作者和本文連結
令狐一衝

相關文章