def __init__(self): self.ip = "127.0.0.1"; #IP fija del Servidor self.puerto = 4040; #Puerto fijo del servidor self.BUFFER_SIZE = 1024; self.qtGuiApp = QtGui.QApplication(sys.argv) self.serverUI = ServerUI(self.ip,self.puerto); #Creo la interfaz del Servidor self.serverUI.botonActualizarUsuarios.clicked.connect(self.actualizarUsuarios); self.clientesConectados = []; print "Servidor escuchando..."; threadServer = threading.Thread(target=self.iniciarServidor); threadServer.start(); #Empiezo un hilo para iniciar el servidor threadPings = ServerPings(self.clientesConectados); #Inicializo un hilo para hacer pings a los clientes #conecto la señal que hará el hilo de los pings a la vista principal del servidor self.serverUI.connect(threadPings,QtCore.SIGNAL("actualizarUsuarios()"),self.actualizarUsuarios); threadPings.start(); self.showGUI(); #muestro la interfaz
def __init__(self): self.ip = "127.0.0.1" # IP fija del Servidor self.puerto = 4040 # Puerto fijo del servidor self.qtGuiApp = QtGui.QApplication(sys.argv) self.serverUI = ServerUI(self.ip, self.puerto) # Creo la interfaz del Servidor self.serverUI.botonActualizarUsuarios.clicked.connect(self.actualizarUsuarios) self.clientesConectados = [] threadServer = threading.Thread(target=self.iniciarServidor) threadServer.start() # Empiezo un hilo para iniciar el servidor print "Servidor escuchando..." self.showGUI()
class Server(): def __init__(self): self.ip = "127.0.0.1"; #IP fija del Servidor self.puerto = 4040; #Puerto fijo del servidor self.BUFFER_SIZE = 1024; self.qtGuiApp = QtGui.QApplication(sys.argv) self.serverUI = ServerUI(self.ip,self.puerto); #Creo la interfaz del Servidor self.serverUI.botonActualizarUsuarios.clicked.connect(self.actualizarUsuarios); self.clientesConectados = []; print "Servidor escuchando..."; threadServer = threading.Thread(target=self.iniciarServidor); threadServer.start(); #Empiezo un hilo para iniciar el servidor threadPings = ServerPings(self.clientesConectados); #Inicializo un hilo para hacer pings a los clientes #conecto la señal que hará el hilo de los pings a la vista principal del servidor self.serverUI.connect(threadPings,QtCore.SIGNAL("actualizarUsuarios()"),self.actualizarUsuarios); threadPings.start(); self.showGUI(); #muestro la interfaz """ Función para mostrar la interfaz del servidor """ def showGUI(self): self.serverUI.show(); #hago que cuando se cierre la aplicación gráfica, se acabe la ejecución del programa os._exit(self.qtGuiApp.exec_()); """ Función que es llamada remotamenta para añadir un usuario a la lista del servidor """ def addCliente(self,nombre,ip,puerto): self.clientesConectados.append({"nombre": nombre,"ip": ip,"puerto": puerto}); print "Clientes actuales: " + str(self.clientesConectados); """ Función llamada remotamente para remover un usuario del servidor """ def desconectarCliente(self,nombre,ip,puerto): try: """ Cada cliente es un diccionario con tres llaves: - nombre: - ip - puerto """ self.clientesConectados.remove({'nombre':nombre,'ip':ip,'puerto':puerto}); except ValueError as ve: return; print "Clientes actuales: " + str(self.clientesConectados); """ Función llamada remotamente que envía la lista de usuarios conectados """ def getUsuarios(self): return self.clientesConectados; """ Función para actualizar en la vista la lista de usuarios """ def actualizarUsuarios(self): self.serverUI.actualizarClientes(self.clientesConectados); """ Función para inicializar el servidor con la IP y el puerto fijos Registra las siguientes funciones - addCliente - desconectarCliente - getUsuarios """ def iniciarServidor(self): try: print "Inicializando Servidor..." serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM); serverSocket.bind((self.ip, self.puerto)); serverSocket.listen(1); while True: (clientSocket,clientAddress) = serverSocket.accept(); print u"Recibí un cliente en la dirección ",clientAddress; data_json = clientSocket.recv(self.BUFFER_SIZE); print u"Recibí un mensaje" if data_json: data = json.loads(data_json); if(data["peticion"] == "addCliente"): self.addCliente(data["nombre"],data["ip"],data["puerto"]); except Exception as e: self.serverUI.mostarError(u"No se pudo inicializar el servidor. Por favor, reinicie la aplicación"); print u"No se pudo inicializar el servidor. Por favor, reinicie la aplicación"; sys._exit(-1);
class Server: def __init__(self): self.ip = "127.0.0.1" # IP fija del Servidor self.puerto = 4040 # Puerto fijo del servidor self.qtGuiApp = QtGui.QApplication(sys.argv) self.serverUI = ServerUI(self.ip, self.puerto) # Creo la interfaz del Servidor self.serverUI.botonActualizarUsuarios.clicked.connect(self.actualizarUsuarios) self.clientesConectados = [] threadServer = threading.Thread(target=self.iniciarServidor) threadServer.start() # Empiezo un hilo para iniciar el servidor print "Servidor escuchando..." self.showGUI() # muestro la interfaz """ Función para mostrar la interfaz del servidor """ def showGUI(self): self.serverUI.show() # hago que cuando se cierre la aplicación gráfica, se acabe la ejecución del programa os._exit(self.qtGuiApp.exec_()) """ Función que es llamada remotamenta para añadir un usuario a la lista del servidor """ def addCliente(self, nombre, ip, puerto): self.clientesConectados.append({"nombre": nombre, "ip": ip, "puerto": puerto}) print "Clientes actuales: " + str(self.clientesConectados) """ Función llamada remotamente para remover un usuario del servidor """ def desconectarCliente(self, nombre, ip, puerto): try: """ Cada cliente es un diccionario con tres llaves: - nombre: - ip - puerto """ self.clientesConectados.remove({"nombre": nombre, "ip": ip, "puerto": puerto}) except ValueError as ve: return print "Clientes actuales: " + str(self.clientesConectados) """ Función llamada remotamente que envía la lista de usuarios conectados """ def getUsuarios(self): return self.clientesConectados """ Función para actualizar en la vista la lista de usuarios """ def actualizarUsuarios(self): self.serverUI.actualizarClientes(self.clientesConectados) """ Función para inicializar el servidor con la IP y el puerto fijos Registra las siguientes funciones - addCliente - desconectarCliente - getUsuarios """ def iniciarServidor(self): print "Inicializando Servidor..." server = SimpleXMLRPCServer((str(self.ip), int(self.puerto)), allow_none=True) server.register_function(self.addCliente, "addCliente") server.register_function(self.desconectarCliente, "desconectarCliente") server.register_function(self.getUsuarios, "getUsuarios") server.serve_forever()
class Server(): def __init__(self): self.ip = "127.0.0.1"; #IP fija del Servidor self.puerto = 4040; #Puerto fijo del servidor self.qtGuiApp = QtGui.QApplication(sys.argv) self.serverUI = ServerUI(self.ip,self.puerto); #Creo la interfaz del Servidor self.serverUI.botonActualizarUsuarios.clicked.connect(self.actualizarUsuarios); self.clientesConectados = []; print "Servidor escuchando..."; threadServer = threading.Thread(target=self.iniciarServidor); threadServer.start(); #Empiezo un hilo para iniciar el servidor threadPings = ServerPings(self.clientesConectados); #Inicializo un hilo para hacer pings a los clientes #conecto la señal que hará el hilo de los pings a la vista principal del servidor self.serverUI.connect(threadPings,QtCore.SIGNAL("actualizarUsuarios()"),self.actualizarUsuarios); threadPings.start(); self.showGUI(); #muestro la interfaz """ Función para mostrar la interfaz del servidor """ def showGUI(self): self.serverUI.show(); #hago que cuando se cierre la aplicación gráfica, se acabe la ejecución del programa os._exit(self.qtGuiApp.exec_()); """ Función que es llamada remotamenta para añadir un usuario a la lista del servidor """ def addCliente(self,nombre,ip,puerto): self.clientesConectados.append({"nombre": nombre,"ip": ip,"puerto": puerto}); print "Clientes actuales: " + str(self.clientesConectados); """ Función llamada remotamente para remover un usuario del servidor """ def desconectarCliente(self,nombre,ip,puerto): try: """ Cada cliente es un diccionario con tres llaves: - nombre: - ip - puerto """ self.clientesConectados.remove({'nombre':nombre,'ip':ip,'puerto':puerto}); except ValueError as ve: return; print "Clientes actuales: " + str(self.clientesConectados); """ Función llamada remotamente que envía la lista de usuarios conectados """ def getUsuarios(self): return self.clientesConectados; """ Función para actualizar en la vista la lista de usuarios """ def actualizarUsuarios(self): self.serverUI.actualizarClientes(self.clientesConectados); """ Función para inicializar el servidor con la IP y el puerto fijos Registra las siguientes funciones - addCliente - desconectarCliente - getUsuarios """ def iniciarServidor(self): try: print "Inicializando Servidor..." server = SimpleXMLRPCServer((str(self.ip), int(self.puerto)),allow_none=True) server.register_function(self.addCliente,'addCliente'); server.register_function(self.desconectarCliente,'desconectarCliente'); server.register_function(self.getUsuarios,'getUsuarios'); server.serve_forever(); except Exception as e: self.serverUI.mostarError(u"No se pudo inicializar el servidor. Por favor, reinicie la aplicación"); print u"No se pudo inicializar el servidor. Por favor, reinicie la aplicación"; sys._exit(-1);