[Codigo] Simple chat

Iniciado por blozzter, Agosto 29, 2011, 01:45:14 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Agosto 29, 2011, 01:45:14 PM Ultima modificación: Marzo 23, 2015, 12:10:09 PM por Expermicid
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

#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

#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 No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ya que este comienza con la función que "escucha", y luego ejecutar el No tienes permitido ver los links. Registrarse o Entrar a mi cuenta que es el que se conecta y empieza a "hablar", luego se van alternando de modo automático.


saludos.
¡< blozzter >!

Ese code anda dando vueltas por todos los foros XD
Yo ando trabajando uno con Python + PHP

Saludos.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi 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.
¡< blozzter >!