Saltar al contenido

Comunicación entre dos computadoras usando python socket

Intenta entender el código correctamente antes de utilizarlo a tu proyecto y si tdeseas aportar algo puedes dejarlo en los comentarios.

Solución:

El problema está en la dirección de tu cliente:

SERVER_IP   = '127.0.0.1'

Se está conectando a la máquina local y enviando datos, mientras que su servidor está sentado en una IP diferente. Debe conectarse a la IP del servidor o al nombre de host.

Puede verificar esto haciendo que el cliente se conecte primero (y falle si no puede)

...

import time

mySocket = socket( AF_INET, SOCK_DGRAM )
mySocket.connect((SERVER_IP,PORT_NUMBER))

while True:
        mySocket.send('cool')
        time.sleep(.5)

Actualizar desde los comentarios

Debido a que está en una conexión wifi, eso implica que ambas máquinas están en la red local. Debe encontrar la dirección IP de LAN del servidor para especificarlo como destino.

Enfoque de línea de comandos para encontrar su IP

  • OSX/Linux: ifconfig
  • Ventanas: ipconfig /all

Este programa se utiliza para enviar “letras pequeñas string” del cliente y obtener “letras mayúsculas” del servidor

Lado del servidor

import socket

def Main():
   
    host = '192.168.0.12' #Server ip
    port = 4000

    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.bind((host, port))

    print("Server Started")
    while True:
        data, addr = s.recvfrom(1024)
        data = data.decode('utf-8')
        print("Message from: " + str(addr))
        print("From connected user: " + data)
        data = data.upper()
        print("Sending: " + data)
        s.sendto(data.encode('utf-8'), addr)
    c.close()

if __name__=='__main__':
    Main()

Lado del cliente

import socket

def Main():

    host='192.168.0.13' #client ip
    port = 4005
    
    server = ('192.168.0.12', 4000)
    
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.bind((host,port))
    
    message = input("-> ")
    while message !='q':
        s.sendto(message.encode('utf-8'), server)
        data, addr = s.recvfrom(1024)
        data = data.decode('utf-8')
        print("Received from server: " + data)
        message = input("-> ")
    s.close()

if __name__=='__main__':
    Main()

Si te ha resultado provechoso este post, sería de mucha ayuda si lo compartes con más seniors así nos ayudas a difundir este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *