[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 You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login ya que este comienza con la función que "escucha", y luego ejecutar el You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login 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.
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
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 >!