Funcionamiento:
Simplemente es un servidor socket y un cliente GUI con socket que interactuan, desde el cliente vas mandando comandos y el servidor los ejecuta en la máquina en la que esta ejecutandose. Solo he puesto unos cuantos comando inútiles para ver si funcionaba, y si hace, bastante bien.
Los comandos en cuestión son:
mostrar_os -> Muestra el sistema operativo del servidor
cmd pause -> Pausa una consola en Windows
echo HolaM -> Muestra "Hola Mundo" en la consola.
Código Fuente:
server.py:
Código
#!/usr/bin/python import socket import os s = socket.socket() s.bind(("localhost", 9999)) s.listen(30) sc, addr = s.accept() sc.send("Bienvenido!") while True: recibido = sc.recv(255) print "Recibido:", recibido if recibido == "quit": break if recibido == "mostrar_os": recibido = os.name if recibido == "cmd pause": os.system("pause") if recibido == "echo HolaM": os.system("echo \"Hola Mundo\"") sc.send(recibido) print "adios" sc.close() s.close()
client.py:
Código
#!/usr/bin/python from Tkinter import * import socket import threading class App: def __init__(self, master): Texto = "" frame = Frame(master) frame.pack() self.texto_chat = Text(frame) self.texto_envio = Entry(frame) self.boton_enviar = Button(frame, text="Enviar!", command=self.evento) self.texto_chat.grid(row=1, column=1) self.texto_envio.grid(row=2, column=1) self.boton_enviar.grid(row=2, column=2,) def evento(self): Texto = self.texto_envio.get() s.send(Texto) self.texto_chat.insert(END, "Cliente -> " + Texto + "\n", END) root = Tk() application = App(root) class socket_thread(threading.Thread): def __init__(self): threading.Thread.__init__(self) def run(self): while True: mensaje = s.recv(255) print "Server -> " + mensaje application.texto_chat.insert(END, "Server -> " + mensaje + "\n", END) #time.sleep(2) if mensaje == "quit": self.salir def salir(): print "Saliendo..." s.close() s = socket.socket() s.connect(("localhost", 9999)) sock = socket_thread() sock.start() root.mainloop()
Espero que sirva de algo esto que hice
Si me dejan ponerle licencia que sea zlib, para que pase a dominio público y no tengas que darme ni reconocimientos ni créditos, si lo usaras en tus aplicaciones tanto libres como comerciales.