continuously_echo

This commit is contained in:
Ahmet Kaan GÜMÜŞ 2023-09-13 03:51:33 +03:00
parent f9eeea892e
commit 86c5e0c788

View file

@ -1,6 +1,6 @@
use std::net::{TcpListener, TcpStream}; use std::net::{TcpListener, TcpStream};
use std::io::{Read, Write}; use std::io::{Read, Write, self};
use std::env; use std::{env, thread};
use std::str::from_utf8; use std::str::from_utf8;
enum EnvArg enum EnvArg
@ -17,14 +17,21 @@ impl EnvArg
Ok(mut socket) => Ok(mut socket) =>
{ {
println!("Connected"); println!("Connected");
socket.write(b"Hello").unwrap(); let socket_clone = socket.try_clone().expect("Cloning Failed");
thread::spawn(move || {Self::c_send(&socket_clone)});
let stay = true;
while stay
{
let mut data = [0 as u8; 1024]; let mut data = [0 as u8; 1024];
match socket.read(&mut data) match socket.read(&mut data)
{ {
Ok(_) => Ok(_) =>
{
if data[0] != 0
{ {
println!("{}", from_utf8(&data).unwrap()); println!("{}", from_utf8(&data).unwrap());
} }
}
Err(e) => Err(e) =>
{ {
println!("Failed to receive data: {}", e); println!("Failed to receive data: {}", e);
@ -32,6 +39,7 @@ impl EnvArg
} }
} }
} }
}
Err(e) => Err(e) =>
{ {
println!("Failed to connect: {}", e); println!("Failed to connect: {}", e);
@ -40,6 +48,14 @@ impl EnvArg
} }
return true; return true;
} }
fn c_send(mut socket:&TcpStream)
{
let stay = true;
while stay
{
socket.write(take_string().as_bytes()).unwrap();
}
}
fn s_connect() -> bool fn s_connect() -> bool
{ {
@ -49,6 +65,9 @@ impl EnvArg
match stream match stream
{ {
Ok(mut stream) => Ok(mut stream) =>
{
let stay = true;
while stay
{ {
let mut data = [0 as u8; 1024]; let mut data = [0 as u8; 1024];
match stream.read(&mut data) match stream.read(&mut data)
@ -69,6 +88,7 @@ impl EnvArg
} }
} }
} }
}
Err(e) => Err(e) =>
{ {
println!("Something Happened: {}", e); println!("Something Happened: {}", e);
@ -106,6 +126,13 @@ fn take_arg() -> EnvArg
panic!(); panic!();
} }
fn take_string() -> String
{
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Failed to Read from Console");
input
}
fn client() fn client()
{ {
println!("Client"); println!("Client");