Underc0de

Programación Scripting => Python => Mensaje iniciado por: blozzter en Agosto 29, 2011, 01:45:14 PM

Título: [Codigo] Simple chat
Publicado por: blozzter en Agosto 29, 2011, 01:45:14 PM
buenas,
estaba leyendo el libro"python para todos" y me encontré con un ejemplo de sockets que me pareció interesante. el ejercicio constaba de 2 scripts, uno era un cliente y otro un servidor; en el cliente podíamos escribir texto y luego ese texto era mostrado en el servidor. decidí modificarlo un poco para que ambos scripts pudiesen ir alternando la función cliente-servidor, es decir, hacer una especie de chat que permitiese simular una conversación simple del siguiente modo:  escribe usuario1, lee usuario2, escribe usuario2, lee usuario1; y así sucesivamente.

dejo los scripts:

k1.py

Código (python) [Seleccionar]

#uso:  python k1.py ip_a_comunicar (se admite 127.0.0.1)
# by blozzter.

import sys, socket

ip = sys.argv[1]

def enviar():
s = socket.socket()
s.connect((ip, 9998))  #se conecta a esa ip
mensaje = raw_input("[>] ")
s.send(mensaje)
if mensaje == "quit":
print 'bye bye'
s.close()
sys.exit()

def recibir():
s = socket.socket()
s.bind(("", 9999))
s.listen(1)
sc, addr = s.accept()

recibido = sc.recv(1024)
if recibido == "quit":
print 'bye bye'
sc.close()
s.close()
sys.exit()
print "Recibido:", recibido
sc.send(recibido)

def cambiar(word):
if word == 'enviar':
word = 'recibir'
elif word == 'recibir':
word = 'enviar'
return word

accion = 'enviar'

while True:
if accion == 'enviar':
enviar()
elif accion == 'recibir':
recibir()
accion = cambiar(accion)



k2.py

Código (python) [Seleccionar]

#uso: python k2.py ip_a_comunicar (se admite 127.0.0.1)
# by blozzter.

import sys, socket

ip = sys.argv[1]

def enviar():
s = socket.socket()
s.connect((ip, 9999))  #se conecta a esa ip
mensaje = raw_input("[>] ")
s.send(mensaje)
if mensaje == "quit":
print 'bye bye'
s.close()
sys.exit()

def recibir():
s = socket.socket()
s.bind(("", 9998))
s.listen(1)
sc, addr = s.accept()

recibido = sc.recv(1024)
if recibido == "quit":
print 'bye bye'
sc.close()
s.close()
sys.exit()
print "Recibido:", recibido
sc.send(recibido)

def cambiar(word):
if word == 'enviar':
word = 'recibir'
elif word == 'recibir':
word = 'enviar'
return word

accion = 'recibir'

while True:
if accion == 'enviar':
enviar()
elif accion == 'recibir':
recibir()
accion = cambiar(accion)



primero se debe ejecutar el k2.py ya que este comienza con la función que "escucha", y luego ejecutar el k1.py que es el que se conecta y empieza a "hablar", luego se van alternando de modo automático.


saludos.
Título: Re:[codigo]simple chat
Publicado por: JaAViEr en Agosto 29, 2011, 04:10:43 PM
Ese code anda dando vueltas por todos los foros XD
Yo ando trabajando uno con Python + PHP

Saludos.
Título: Re:[codigo]simple chat
Publicado por: blozzter en Agosto 29, 2011, 04:21:39 PM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Ese code anda dando vueltas por todos los foros XD
Yo ando trabajando uno con Python + PHP

Saludos.

yo nunca lo he visto. al menos no modificado para que las dos partes puedan hablar.