mirror of
https://github.com/Noratrieb/captain.git
synced 2026-01-14 14:35:02 +01:00
stuff
This commit is contained in:
parent
f0ffa77500
commit
e82f2076b8
10 changed files with 329 additions and 5 deletions
7
test-services/tcpecho/Cargo.toml
Normal file
7
test-services/tcpecho/Cargo.toml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
[package]
|
||||
name = "tcpecho"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
eyre.workspace = true
|
||||
35
test-services/tcpecho/src/main.rs
Normal file
35
test-services/tcpecho/src/main.rs
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
use std::{
|
||||
io::{Read, Write},
|
||||
net::{TcpListener, TcpStream},
|
||||
};
|
||||
|
||||
use eyre::{Context, Result};
|
||||
|
||||
fn main() -> Result<()> {
|
||||
let addr = std::env::var("BIND_ADDR")
|
||||
.ok()
|
||||
.or(std::env::args().nth(1))
|
||||
.unwrap_or("127.0.0.1:1000".to_owned());
|
||||
println!("Listening on address {addr}");
|
||||
let stream = TcpListener::bind(&addr).wrap_err_with(|| format!("binding socket on {addr}"))?;
|
||||
|
||||
loop {
|
||||
let next = stream.accept()?;
|
||||
std::thread::spawn(move || {
|
||||
if let Err(err) = echo(next.0) {
|
||||
eprintln!("{err:?}");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
fn echo(mut stream: TcpStream) -> Result<()> {
|
||||
let mut buf = [0; 1024];
|
||||
loop {
|
||||
let read = stream.read(&mut buf)?;
|
||||
if read == 0 {
|
||||
return Ok(());
|
||||
}
|
||||
stream.write_all(&buf[..read])?;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue