summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-05-28 22:08:46 -0600
committermo khan <mo@mokhan.ca>2025-05-28 22:08:46 -0600
commit6a617ef8de30fb00f0a36a3fffea2c39bc3fa78c (patch)
tree6d3253d21d8ebb945dc91258808d2ef81b4182b0
parentcb36e3d9b3fcc256ac3131a4ace25a4c41102409 (diff)
feat: start a tcp server
-rw-r--r--Cargo.lock7
-rw-r--r--src/main.rs23
2 files changed, 29 insertions, 1 deletions
diff --git a/Cargo.lock b/Cargo.lock
new file mode 100644
index 0000000..ba61b5b
--- /dev/null
+++ b/Cargo.lock
@@ -0,0 +1,7 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 4
+
+[[package]]
+name = "sts"
+version = "0.1.0"
diff --git a/src/main.rs b/src/main.rs
index e7a11a9..c42cc8e 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,3 +1,24 @@
+use std::io::BufReader;
+use std::io::prelude::*;
+use std::net::TcpListener;
+use std::net::TcpStream;
+
fn main() {
- println!("Hello, world!");
+ let listener = TcpListener::bind("127.0.0.1:7878").unwrap();
+
+ for stream in listener.incoming() {
+ let stream = stream.unwrap();
+ handle_connection(stream);
+ }
+}
+
+fn handle_connection(stream: TcpStream) {
+ let buf_reader = BufReader::new(&stream);
+ let http_request: Vec<_> = buf_reader
+ .lines()
+ .map(|result| result.unwrap())
+ .take_while(|line| !line.is_empty())
+ .collect();
+
+ println!("Request: {http_request:#?}");
}