Rust网络编程(7)-ftp和tftp

ftp和tftp 非重点,仅作为手册记录,方便以后需要时查询

1. ftp

  1. FTP(File Transfer Protocol,文件传输协议)是 TCP/IP 协议组中的协议之一。其主要作用是在服务器和客户端之间实现文件的传输和共享。FTP协议运行在TCP连接上,保证了文件传输的可靠性。
  2. FTP使用了两个并行的tcp来传输文件:一个是控制连接,使用21号端口;一个是数据连接,使用20号端口,控制连接用于在两个主机之间传输控制信息,如口令,用户标识,存放、获取文件等命令。数据连接用于实际发送一个文件,发送完文件之后数据连接会关闭。
  3. FTP主要有主动模式和被动模式两种。主动模式是FTP客户端告诉服务端用哪个端口作为数据端口,然后让服务端来连接自己。被动模式则是由客户端发起控制连接请求和数据连接请求。

自行搭建ftp服务器端,这里提供客户端代码案例
依赖:
ftp = “3.0.1”
代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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("tt", "1").unwrap();

println!("Current directory: {}", ftp_stream.pwd().unwrap());
let remote_file = ftp_stream.simple_retr("./hello").unwrap();
println!("Contents: \n{}\n", str::from_utf8(&remote_file.into_inner()).unwrap());

let mut reader = Cursor::new("Hello from client".as_bytes());
let _ = ftp_stream.put("upload", &mut reader);

let _ = ftp_stream.quit();
}

2. tftp

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。TFTP基于UDP,对应端口号为69.

自行搭建服务器端

依赖:
tftp_server = “0.0.3”

1
2
3
4
5
6
7
8
9
10
11
12
use tftp_server::server::TftpServerBuilder;
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
//use std::str::FromStr;

fn main() {
// let addr = format!("0.0.0.0.{}", 69);
// let socket_addr = SocketAddr::from_str(addr.as_str()).unwrap();
let socket_addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 69);
let builder = TftpServerBuilder::new().addr(socket_addr);
let mut server = builder.build().unwrap();
server.run().expect("some error");
}

总结

本文编辑完毕

  • Copyrights © 2017-2023 Jason
  • Visitors: | Views:

谢谢打赏~

微信