elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Problema chat en terminal con python
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema chat en terminal con python  (Leído 2,322 veces)
aangrymasther

Desconectado Desconectado

Mensajes: 69


Zona especial Este


Ver Perfil
Problema chat en terminal con python
« en: 30 Noviembre 2017, 21:22 pm »

Buenas, hoy traigo una duda que e me atormenta desde hace un tiempo. El caso es que estoy trabajando en un chat en el lenguaje python, este funciona "perfectamente" , para evitar tener que esperar una respuesta para poder enviar un mensaje utilice threads, de modo que cuando llega un thread escucha la llegada de mensajes mientras  que otro espera entradas del usuario.
El problema llega  en el momento en el que se recibe un mensaje y se imprime en pantalla, porque el input lo recoge como una entrada, de forma que si el usuario esta escribiendo se le añade al mensaje recibido al que estaba escribiendo.

¿Se os ocurre alguna forma de solucionar esto?

PD: E pensado en interfaces gráficas, pero no me hacen mucha gracia  :xD .

Gracias de antemano.

Código:

Código:
import socket
import threading
import sys
from Crypto.Cipher import AES



print ""*100





s = socket.socket(socket.AF_INET , socket.SOCK_STREAM)
try:
s.connect(("localhost" , 12345))
except:
print "[!] El servidor no esta operativo"
sys.exit(1)

clave = s.recv(1024)
if len(clave) != 16:
print "[!] Problema con el cifrado"
else:
cipher = AES.new(clave)





print chr(27)+"[0;35m"+" Chat prueba"
print chr(27)+"[0;37m"+""

def send():

while True:
mensaje = raw_input(chr(27)+"[1;34m")
if mensaje == "exit":
print "Alguien a salido"

s.send(cipher.encrypt("/exit"*16))
sys.exit(1)

else:
s.send(cipher.encrypt((usuario+":"+mensaje)*16))


def recv():
clave = s.recv(1024)
while True:
print chr(27)+"[1;32m"
mensaje_decrypt = ""
recivido = cipher.decrypt(s.recv(1024))
for x in range(len(recivido)/16):
mensaje_decrypt += recivido[x]
print mensaje_decrypt.rjust(100)


usuario = raw_input("cual es tu usuario:")

s.send(cipher.encrypt(usuario))
z = threading.Thread(target=recv)
c = threading.Thread(target=send)
z.start()
c.start()


« Última modificación: 30 Noviembre 2017, 21:27 pm por aangrymasther » En línea

Probablemente el 99% de lo que digo sea incorrecto
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python] Salas de chat
Scripting
WaAYa HaCK 2 4,369 Último mensaje 5 Agosto 2011, 05:08 am
por WaAYa HaCK
[Python + QT4] Problema con barra de navegador hecho con python y QT4
Scripting
darkweb64 3 3,101 Último mensaje 18 Mayo 2015, 17:23 pm
por darkweb64
Problema con la terminal « 1 2 »
GNU/Linux
@Razel_ 10 4,682 Último mensaje 5 Julio 2015, 23:04 pm
por robebugaty
[BASH]¿Como ejecutar arpspoof desde un terminal en otra terminal?
Scripting
Torodin 0 2,223 Último mensaje 25 Septiembre 2016, 15:59 pm
por Torodin
Copiar archivos desde terminal víctima a terminal atacante de manera remota
Seguridad
MSputnik 2 4,642 Último mensaje 2 Agosto 2017, 18:51 pm
por MSputnik
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines