Skip to content
เข้าสู่ระบบ

Net Structs

Network structs สำหรับ TCP/UDP ใน Rust

use std::net::{TcpListener, TcpStream};
use std::io::{Read, Write};
fn handle_client(mut stream: TcpStream) {
let mut buffer = [0; 512];
match stream.read(&mut buffer) {
Ok(n) => {
let request = String::from_utf8_lossy(&buffer[..n]);
println!("Received: {}", request);
let response = "HTTP/1.1 200 OK\r\n\r\nHello!";
stream.write_all(response.as_bytes()).ok();
}
Err(e) => println!("Error: {}", e),
}
}
fn main() {
// ============================================
// Bind to address
// ============================================
let listener = TcpListener::bind("127.0.0.1:0").unwrap();
let addr = listener.local_addr().unwrap();
println!("Listening on {}", addr);
// ============================================
// Non-blocking mode
// ============================================
listener.set_nonblocking(true).ok();
// ============================================
// Accept connections
// ============================================
for connection in listener.incoming().take(1) {
match connection {
Ok(stream) => {
println!("New connection: {}", stream.peer_addr().unwrap());
handle_client(stream);
}
Err(ref e) if e.kind() == std::io::ErrorKind::WouldBlock => {
break;
}
Err(e) => println!("Error: {}", e),
}
}
}

เข้าสู่ระบบเพื่อดูเนื้อหาเต็ม

ยืนยันตัวตนด้วยบัญชี Google เพื่อปลดล็อกบทความทั้งหมด