Solved / thanks


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.