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
#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
#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.
Ese code anda dando vueltas por todos los foros XD
Yo ando trabajando uno con Python + PHP
Saludos.
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.