Cómo conectar dos computadoras usando Python

Estoy seguro de que hay bibliotecas de nivel superior que intentan ocultar la complejidad, pero el núcleo de una aplicación de red de Python serán los sockets.

Un socket es vagamente como un archivo: puede abrir uno e intentar leerlo o escribirlo; Si alguien está conectado en el otro extremo, leerá lo que escribe y leerá lo que usted escribe. Aquí hay una descripción general de alto nivel: CÓMO de programación de sockets, y algunos pequeños ejemplos concretos aquí: 17.2. socket – Interfaz de red de bajo nivel – Documentación de Python 2.7.13. Tenga en cuenta que INET y STREAM efectivamente significa IP y TCP, respectivamente.

Básicamente, el servidor:
* Crear un socket no conectado con socket ()
* Configure qué dirección y puerto escucha con bind ()
* Haga que comience a escuchar las conexiones entrantes con listen ()
* Espere a que alguien se conecte con accept ( )

Un cliente hará algo similar:
* Crear un socket con socket ( )
* Conéctese a un servidor con c onnect ()

Después de eso, ambos lados pueden usar s endall () para enviar datos y r ecv () para leer datos. Tenga en cuenta que recv esperará hasta que haya algo para leer; parecerá que se cuelga hasta que eso suceda. También tenga en cuenta que esto es como protocolo de tream (suponiendo que use TCP, que probablemente debería). Eso significa que no hay “interrupciones” o “paquetes” en la transmisión: la cantidad que envía en ese momento y la cantidad de lecturas recibidas en ese momento no tienen ninguna relación. Puede enviar dos bloques de 100 bytes, y recv estaría dentro de sus derechos para darle un byte por llamada, o los 200. Por lo tanto, necesita alguna forma de saber cuándo ha recibido un mensaje completo. Puede enviar la longitud en bytes delante de cada mensaje, o tal vez hacer que cada mensaje tenga exactamente 1000 bytes de longitud, o reservar un cierto byte que signifique “fin del mensaje”, o … algo; tu decides.

Por otro lado, esto es mejor si usa SCTP en lugar de TCP; funciona de la misma manera pero le permite enviar y recibir “mensajes”. Es una pena que no sea compatible de forma nativa en Windows.

Aprenda programación de red, cree una conexión de socket entre las dos computadoras y envíe datos entre sí (texto), si desea transferir archivos, cree un servidor web en una computadora y un cliente para OBTENER datos mediante solicitudes HTTP.

Puede establecer una conexión TCP entre los dispositivos usando Python. Tienes que usar la biblioteca de socket para lo mismo. Puede introducir una nueva computadora que actuará como un servidor mientras que su PC y computadora portátil actúan como clientes o puede hacer que el servidor de PC y la computadora portátil sean un cliente o viceversa.

Aquí está el enlace para el tutorial de programación de socket de Python: Python Networking Programming

Scripts simples para chatear entre computadoras en la misma red.

Ambas computadoras deben ejecutar ambos scripts y las direcciones IP de destino deben estar configuradas correctamente.

(La dirección IP de una computadora se puede encontrar usando el comando ipconfig).

# Guardar como server.py
# Receptor de mensajes
importar os
de importación de socket *
host = “”
puerto = 13000
buf = 1024
addr = (host, puerto)
UDPSock = socket (AF_INET, SOCK_DGRAM)
UDPSock.bind (addr)
imprima “Esperando recibir mensajes …”
mientras cierto:
(datos, addr) = UDPSock.recvfrom (buf)
imprimir “Mensaje recibido:” + datos
si data == “salir”:
rotura
UDPSock.close ()
os._exit (0)

# Guardar como client.py
# Remitente del mensaje
importar os
de importación de socket *
host = “127.0.0.1” # establecido en la dirección IP de la computadora de destino
puerto = 13000
addr = (host, puerto)
UDPSock = socket (AF_INET, SOCK_DGRAM)
mientras cierto:
data = raw_input (“Ingrese el mensaje para enviar o escriba ‘exit’:”)
UDPSock.sendto (datos, addr)
si data == “salir”:
rotura
UDPSock.close ()
os._exit (0)