pub fn connect(host: &str, port: i32) {
let address = format!("{host}:{port}");
let stream_result = TcpStream::connect(address);
match stream_result.as_ref() {
Ok(mut stream) => {
let mut stream_clone = stream.try_clone().unwrap();
thread::spawn(move || {
let mut buffer: [u8; 512] = [0; 512];
loop {
let bytes_read = stream_clone.read(&mut buffer).unwrap();
if bytes_read > 0 {
let response = String::from_utf8_lossy(&buffer[..bytes_read]);
println!("Client::Message: Reading response {:?}", response);
}
}
});
let message = ChatMessage {
sender: "Roger".to_string(),
content: "Hello world".to_string(),
timestamp: Utc::now(),
message_type: MessageType::Regular,
};
let serialized_message = serde_json::to_string(&message).unwrap();
if let Err(error) = stream.write_all(serialized_message.as_bytes()) {
println!("Client::Error: Failed to send message {:?}", error);
} else {
println!("Client::Message::Success: Message send sucessfully.");
}
}
Err(err) => {
println!("Client::Error: And error occur {:?}", err)
}
}
let mut input = String::new();
let mut stream_copy = stream_result.unwrap().try_clone().unwrap();
loop {
input.clear();
println!("Entrez un message :");
io::stdin().read_line(&mut input).unwrap();
let message = ChatMessage {
sender: "Roger".to_string(),
content: input.trim().to_string(),
timestamp: Utc::now(),
message_type: MessageType::Regular,
};
let serialized_message = serde_json::to_string(&message).unwrap();
if let Err(error) = stream_copy.write_all( serialized_message.as_bytes()) {
println!("Client::Error: Failed to send message {:?}", error);
} else {
println!("Client::Message::Success: Message sent successfully.");
}
}
}
Perhaps you could explain what's not working? As it is it's very hard to give help.
1 Like
It looks like your client is successfully writing and reading.