Tras haber dejado un post sin ninguna respuesta , empece a buscar como un loco por Google haber como podia hacerlo y ya sabeis el dicho, si quieres, puedes, lo que he hecho esta vez, es crear un servidor socket hecho en python con algunas funciones que se ejecutaran según las ordenes que le demos, según parece, al crear un GUI con Tkinter y teniendo sockets, te ves en una encrucijada pues tenemos dos búcles el de los sockets, para mantener la comunicación y el de la ventana gráfica (root.mainloop()), asi que la solución obvia seria ejecutar una y después otra por cada ciclo, para ello es necesario el uso de thread, que he aprendido a nivel básico como funciona hace un rato , del PDF, Python para todos, y como no tengo ni idea de clases en python lo he adaptado como he podido, y ello me ha obligado a tener que entenderlo.
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:
client.py:
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.
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 (python) [Seleccionar]
#!/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 (python) [Seleccionar]
#!/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.