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


Tema destacado:


+  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,556 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
Python
WaAYa HaCK 2 4,648 Último mensaje 5 Agosto 2011, 05:08 am
por WaAYa HaCK
[Python + QT4] Problema con barra de navegador hecho con python y QT4
Python
darkweb64 3 3,550 Último mensaje 18 Mayo 2015, 17:23 pm
por darkweb64
Problema con la terminal « 1 2 »
GNU/Linux
@Razel_ 10 5,320 Último mensaje 5 Julio 2015, 23:04 pm
por robebugaty
[BASH]¿Como ejecutar arpspoof desde un terminal en otra terminal?
Scripting
Torodin 0 2,607 Ú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 5,797 Último mensaje 2 Agosto 2017, 18:51 pm
por MSputnik
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines