016 Rust 网络编程,FTP 示例
程序员令狐壹冲
2020年06月23日 20:16
收录于文集
共134篇

Github地址

源码地址:https://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文件的内容。