示例#1
0
    def enviarMensaje(self, event):
        """
        This method is called when user enters something into the textbox
        """
        mensaje = self.entry_message.get()

        if mensaje is not '':
            n = chat.Mensaje()
            n.idEmisor = self.username
            n.mensaje = mensaje
            print("S[{}] {}".format(n.idEmisor, n.mensaje))
            self.conn.EnviarMensaje(n)
示例#2
0
    def __init__(self):
        self.username = None
        # se crea el canar grpc
        channel = grpc.insecure_channel(address + ':' + str(port))
        self.conn = rpc.ChatStub(channel)
        self.agregarCliente()
        print("\nBienvenido {}!".format(self.username))
        print("Selecciona alguna de las siguientes opciones")
        print("1. ver lista de clientes")
        print("2. enviar un mensaje a cliente")
        print("3. Mostar mis mensajes enviados")
        print("4. Salir")

        threading.Thread(target=self.__listen__for__messages,
                         daemon=True).start()

        opcion = input("Opcion: ")
        while (opcion != '4'):
            if opcion == '1':
                print('\n\nclientes conectados:')
                self.listaClientes()
            elif opcion == '2':
                print('Seleccione alguno de los siguientes clientes')
                self.listaClientes()
                clientSelect = input("Nombre del cliente receptor: ")
                message = input("Mensaje: ")
                m = chat.Mensaje()
                m.id = "1"
                m.mensaje = message
                m.timestamp = time.time()
                m.usernameEmisor = self.username
                m.usernameReceptor = clientSelect
                code = self.conn.EnviarMensaje(m)
                if code.value == 2:
                    print("el usuario no existe ")
                elif code.value == 3:
                    print("un error a ocurrido intentelo nuevamente")

            elif opcion == "3":
                self.mensajesEnviados()

            else:
                print('ingrese una opcion valida')

            print("\n\nSelecciona alguna de las siguientes opciones")
            print("1. ver lista de clientes")
            print("2. Enviar un mensaje")
            print("3. Mostar mis mensajes enviados")
            print("4. Salir")
            opcion = input("Opcion: ")
示例#3
0
    def enviarMensajes(self):
        self.Ayuda()
        texto = input()

        while texto != "salir":
            data = texto.split()
            #try:
            if data[0] == "msg":
                mensaje = chat.Mensaje()
                mensaje.receptor.id = int(data[1])
                mensaje.emisor.id = self.cliente.id
                mensaje.emisor.nombre = self.cliente.nombre
                mensaje.valor = data[2]
                mensaje.timestamp = datetime.now().strftime(
                    "%d-%b-%Y %H:%M:%S")
                #res = self.conn.EnviarMensaje(mensaje)
                self.conn.EnviarMensaje.future(mensaje).add_done_callback(
                    self.MensajeEnviado)

            elif data[0] == "clientes":
                # No logré hacer asíncrona esta parte :c
                print(
                    "[Server] Lista de clientes conectados al servidor de chat"
                )
                for i in self.conn.ListaClientes(chat.MensajeVacio()):
                    print(i.id, i.nombre)
            elif data[0] == "historial":
                print(
                    "[Server] Lista de mensajes enviados al servidor de chat")
                mensaje = chat.Cliente()
                mensaje.id = self.cliente.id

                for i in self.conn.ObtenerMensajes(mensaje):
                    print("[" + i.timestamp + "] (" + str(i.id) + ") -",
                          i.receptor.nombre + ":", i.valor)
            else:
                self.Ayuda()

            texto = input()
        else:  # Sí, esto es tan legal como el yield
            print("[Info] Hasta pronto!")
            exit(0)
示例#4
0
    def enviarMensajesAuto(self):
        # Temazo
        milHoras = [
            "Hace frío y estoy lejos de casa",
            "Hace tiempo que estoy sentado sobre esta piedra",
            "Yo me pregunto", "Para que sirven las guerras",
            "Tengo un cohete en mi pantalón",
            "Vos estás tan fría como la nieve a mi alrededor",
            "Vos estás tan blanca, que yo no se que hacer",
            "La otra noche te esperé", "bajo la lluvia dos horas",
            "Mil horas como un perro", "Y cuando llegaste me miraste",
            "y me dijiste loco", "Estás mojado, ya no te quiero",
            "En el circo vos ya sos una estrella",
            "Una estrella roja que todo se lo imagina",
            "Si te preguntan, vos no me conocías", "No, no",
            "Tengo un cohete en mi pantalón",
            "Vos estás tan fría como la nieve a mi alrededor",
            "Vos estás tan blanca, que yo no se que hacer",
            "Te esperé bajo la lluvia", "No, no, no, no",
            "La otra noche te esperé", "bajo la lluvia dos horas",
            "Mil horas como un perro", "Y cuando llegaste me miraste",
            "y me dijiste loco", "Estás mojado, ya no te quiero",
            "La otra noche te esperé", "bajo la lluvia dos horas",
            "Mil horas como un perro", "Y cuando llegaste me miraste",
            "y me dijiste loco", "Estás mojado, ya no te quiero"
        ]
        accion = 1
        lastId = 0

        while accion != 0:
            accion = randint(0, 30)

            if accion > 0 and accion <= 10:
                mensaje = chat.Mensaje()
                mensaje.receptor.id = randint(0, lastId)
                mensaje.emisor.id = self.cliente.id
                mensaje.emisor.nombre = self.cliente.nombre
                mensaje.valor = milHoras[randint(0, len(milHoras) - 1)]
                mensaje.timestamp = datetime.now().strftime(
                    "%d-%b-%Y %H:%M:%S")
                #res = self.conn.EnviarMensaje(mensaje)
                self.conn.EnviarMensaje.future(mensaje).add_done_callback(
                    self.MensajeEnviado)
                print("[Cliente] Mensaje enviado")

            elif accion > 10 and accion <= 20:
                print(
                    "[Server] Lista de clientes conectados al servidor de chat"
                )
                for i in self.conn.ListaClientes(chat.MensajeVacio()):
                    print(i.id, i.nombre)
                    lastId = i.id
            elif accion > 20 and accion <= 30:
                print(
                    "[Server] Lista de mensajes enviados al servidor de chat")
                mensaje = chat.Cliente()
                mensaje.id = self.cliente.id

                for i in self.conn.ObtenerMensajes(mensaje):
                    print("[" + i.timestamp + "] (" + str(i.id) + ") -",
                          i.receptor.nombre + ":", i.valor)
            time.sleep(2)
        print("[Info] Hasta pronto!")
        exit(0)
示例#5
0
文件: client.py 项目: MGuzQ/Tarea2
def run():
	global nombre
	global channel
	global stub

	channel = grpc.insecure_channel('server:8080')
	stub = chat_pb2_grpc.BroadcastStub(channel)
	

#despliegue "automatico"

	if len(sys.argv)>1 and sys.argv[1] == 'a':
		response = stub.Conectar(chat_pb2.Usuario(id='a'))
		nombre='a'
		
		_thread.start_new_thread(leer,())
		msg=0
		while True:
			msg +=1
			dateTimeObj = datetime.now()
			timestp = dateTimeObj.strftime("%d-%b-%Y %H:%M:%S")
			if msg == 5:
				response = stub.Conectados(chat_pb2.Mensaje(id_em = nombre, cuerpo = 'conectados', timestamp = timestp))
				print(response.id_em + ": " + response.cuerpo + "[" + response.timestamp + "]")
			elif msg == 8:
				responses = stub.Enviados(chat_pb2.Usuario(id=nombre))
				for response in responses:
					print(response.cuerpo + " [" + response.timestamp + "]")
			elif msg == 11:
				response = stub.Desconectar(chat_pb2.Usuario(id=nombre))
				exit()
			else:
				resp = stub.Enviar(mensajes(msg,'b',timestp))
			time.sleep(12)


	elif len(sys.argv)>1 and sys.argv[1] == 'b':
		response = stub.Conectar(chat_pb2.Usuario(id='b'))
		nombre = 'b'
		
		_thread.start_new_thread(leer,())
		msg=0
		while True:
			msg +=1
			dateTimeObj = datetime.now()
			timestp = dateTimeObj.strftime("%d-%b-%Y %H:%M:%S")
			if msg == 5:
				response = stub.Conectados(chat_pb2.Mensaje(id_em = nombre, cuerpo = 'conectados', timestamp = timestp))
				print(response.id_em + ": " + response.cuerpo + "[" + response.timestamp + "]")
			elif msg == 8:
				responses = stub.Enviados(chat_pb2.Usuario(id=nombre))
				for response in responses:
					print(response.cuerpo + " [" + response.timestamp + "]")
			elif msg == 11:
				response = stub.Desconectar(chat_pb2.Usuario(id=nombre))
				exit()
			else:
				resp = stub.Enviar(mensajes(msg,'a',timestp))
			time.sleep(12)

#----------------------------------------------------
	else:
		while True:

			print("ingrese un nombre de Usuario: ")
			nombre = input()
			response = stub.Conectar(chat_pb2.Usuario(id=nombre))
			if response.msg != "Denegada":
				break
		_thread.start_new_thread(leer,())
		while True:
			msg = input()
			dateTimeObj = datetime.now()
			timestp = dateTimeObj.strftime("%d-%b-%Y %H:%M:%S")
			if msg == "conectados":
				response = stub.Conectados(chat_pb2.Mensaje(id_em = nombre, cuerpo = msg, timestamp = timestp))
				print(response.id_em + ": " + response.cuerpo + "[" + response.timestamp + "]")
			elif msg == "enviados":
				responses = stub.Enviados(chat_pb2.Usuario(id=nombre))
				for response in responses:
					print(response.cuerpo + " [" + response.timestamp + "]")
			elif msg == "exit":
				response = stub.Desconectar(chat_pb2.Usuario(id=nombre))
				exit()
			else:
				content = msg.split(":")
				if len(content) >1:
					resp = stub.Enviar(mensajes(content[0],content[1],timestp))
				else:
					print("Error no se puede enviar mensaje")
示例#6
0
文件: client.py 项目: MGuzQ/Tarea2
def mensajes(msg,dest,ts):
	mensajes = []
	mensajes.append(chat_pb2.Mensaje(id_em = nombre,id_re = str(dest) ,cuerpo = str(msg), timestamp = ts))
	for men in mensajes:
		mensajes.remove(men)
		yield men