Código:
import socket
import pyscreenshot
HOST = 'localhost'
PORT = 4444
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
print('Conexión establecida')
while True:
orden = s.recv(1024)
if orden == b'screenshot':
#tomo un pantallazo y lo guardo en formato png
img = pyscreenshot.grab()
img.save("captura.png")
#abro la imagen en modo lectura binaria para enviarla
f = open("captura.png", "rb")
imagen = f.read()
while imagen:
s.send(imagen)
imagen = f.read()
# se termina el envio de la imagen
print("Imagen enviada")
s.shutdown(socket.SHUT_WR)
f.close()
del(f)
Dejo también el código del servidor, por si sirve de algo
Código:
import socket
import datetime
fechayhora = datetime.datetime.now().strftime('%Y-%m-%d %H-%M-%S')
HOST = 'localhost'
PORT = 4444
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.bind((HOST, PORT))
socket.listen()
print('Servidor a la escucha...')
conn, addr = socket.accept()
print('Conexión entrante de ' + str(addr))
with conn:
while True:
orden = input('Ingresa una orden: ')
orden = orden.lower()
if orden == 'screenshot':
conn.send(b'screenshot')
#recibo la imagen enviada desde el cliente
f = open('capturas\\screenshot_' + str(fechayhora) + '.png', 'wb')
imagen = conn.recv(1024)
while imagen:
f.write(imagen)
imagen = conn.recv(1024)
f.close()
print('Imagen recibida')
elif orden == 'salir':
quit()