es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué el cliente no se conecta a mi servidor TCP?

No puedo conectarme a mi servidor con el cliente a pesar de que mi computadora portátil actúa como cliente y mi PC actúa como servidor, están conectados al mismo wifi. Intenté desactivar el firewall de Windows pero no ayudó. Este es el código de error que está recibiendo mi computadora portátil (cliente): Error: Os { código: 10061, tipo: ConnectionRefused, mensaje: “No se pudo establecer una conexión porque el equipo de destino lo rechazó activamente.” }

Código del cliente que se ejecuta en la computadora portátil:

use std::io::prelude::*;
use std::net::TcpStream;

fn main() -> std::io::Result<()> {
    let mut stream = TcpStream::connect("localhost:8080")?;

    stream.write(&[1])?;
    stream.read(&mut [0; 128])?;
    Ok(())
} // aquí se cierra el flujo

Código del servidor que se ejecuta en la PC:

use std::net::{TcpListener, TcpStream};
use std::io::{Read, Write};
use std::io::{BufReader, BufWriter};

fn handle_client(stream: TcpStream) {
    // ...
    let mut reader = BufReader::new(&stream);
    let mut response = String::new();
    reader.read_to_string(&mut response).unwrap();
    println!("{}", response);
}

fn main() -> std::io::Result<()> {
    let listener = TcpListener::bind("0.0.0.0:8080")?;

    // aceptar conexiones y procesarlas en serie
    for stream in listener.incoming() {
        handle_client(stream?);
    }
    Ok(())
}
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Basado en el código de error y los fragmentos de código proporcionados, parece que el cliente no puede establecer una conexión con el servidor. Esto podría ser debido a varias razones, incluyendo:

    • El servidor no está en ejecución: Asegúrese de que el código del servidor se esté ejecutando en la PC y esté escuchando conexiones entrantes. Verifique que TcpListener esté correctamente enlazado al puerto 8080.
    • El cliente está utilizando una dirección IP o nombre de host incorrectos: En lugar de usar localhost en TcpStream::connect("localhost:8080"), intente utilizar la dirección IP de la PC (por ejemplo, 192.168.1.100:8080, donde 192.168.1.100 es la dirección IP de la PC). Puede encontrar la dirección IP de la PC ejecutando ipconfig en el símbolo del sistema y buscando la dirección IPv4.
    • El firewall está bloqueando la conexión: Incluso si ha desactivado el firewall de Windows, otros firewalls (por ejemplo, firewalls de antivirus) podrían estar bloqueando la conexión. Intente deshabilitar temporalmente todos los firewalls para ver si se soluciona el problema.
    • El puerto está siendo utilizado por otra aplicación: Asegúrese de que ninguna otra aplicación esté utilizando el puerto 8080. Puede utilizar el comando netstat -ano | findstr :8080 para ver si alguna aplicación está utilizando el puerto. Si es así, puede cambiar el puerto utilizado por el servidor o cerrar la otra aplicación.

    Asegúrese de verificar cada uno de estos posibles problemas y vea si ayudan a resolver el problema de conexión.

Comments are closed.