一、web服务器
use std::net::TcpListener;
fn main() {
// 监听某个ip和端口
let listener = TcpListener::bind("127.0.0.1:8888").unwrap();
for stream in listener.incoming() {
let strData = stream.unwrap();
println!("Connection established");
}
}
打开浏览器 http://127.0.0.1:8888/
然后看下如何读取请求传过来的参数
use std::io::Read;
use std::net::{TcpListener, TcpStream};
fn main() {
// 监听某个ip和端口
let listener = TcpListener::bind("127.0.0.1:8888").unwrap();
for stream in listener.incoming() {
let stream = stream.unwrap();
// 读取请求参数
handle_readData(stream);
}
// 读取数据处理
fn handle_readData(mut stream:TcpStream) {
let mut buffer = [0;512];
// 把流stream中的数据读取到缓存区buffer中
stream.read(&mut buffer).unwrap();
println!("Request param:{}",String::from_utf8_lossy(&buffer[..]));
}
}
http://127.0.0.1:8888/ 访问一下 ,控制台输出了结果
新建html ,补充代码
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset="utf-8">
<title>Hello</title>
</head>
<body>
<h1>Hello!</h1>
<p>Hi from Rust</p>
</body>
</html>
se std::fs;
use std::io::{Read, Write};
use std::net::{TcpListener, TcpStream};
fn main() {
// 监听某个ip和端口
let listener = TcpListener::bind("127.0.0.1:8888").unwrap();
for stream in listener.incoming() {
let stream = stream.unwrap();
// 读取请求参数
handle_readData(stream);
}
// 读取数据处理
fn handle_readData(mut stream:TcpStream) {
let mut buffer = [0;512];
// 把流stream中的数据读取到缓存区buffer中
stream.read(&mut buffer).unwrap();
// 然后输出响应response
let contents = fs::read_to_string("hello.html").unwrap();
let response = format!("HTTP/1.1 200 OK\r\n\r\n{}",contents);
stream.write(response.as_bytes()).unwrap();
stream.flush().unwrap();
}
}
增加针对异常的处理