send
Grupo de Telegram
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[Codigo] Simple chat

  • 2 Respuestas
  • 1416 Vistas

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

Desconectado blozzter

  • *
  • Underc0der
  • Mensajes: 106
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • blozzter-blz
« 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
  1. #uso:  python k1.py ip_a_comunicar (se admite 127.0.0.1)
  2. # by blozzter.
  3.  
  4. import sys, socket
  5.  
  6. ip = sys.argv[1]
  7.  
  8. def enviar():
  9.         s = socket.socket()
  10.         s.connect((ip, 9998))  #se conecta a esa ip
  11.         mensaje = raw_input("[>] ")
  12.         s.send(mensaje)
  13.         if mensaje == "quit":
  14.                 print 'bye bye'
  15.                 s.close()
  16.                 sys.exit()
  17.                
  18. def recibir():
  19.         s = socket.socket()
  20.         s.bind(("", 9999))
  21.         s.listen(1)
  22.         sc, addr = s.accept()
  23.        
  24.         recibido = sc.recv(1024)
  25.         if recibido == "quit":
  26.                 print 'bye bye'
  27.                 sc.close()
  28.                 s.close()
  29.                 sys.exit()
  30.         print "Recibido:", recibido
  31.         sc.send(recibido)
  32.        
  33. def cambiar(word):
  34.         if word == 'enviar':
  35.                 word = 'recibir'
  36.         elif word == 'recibir':
  37.                 word = 'enviar'
  38.         return word
  39.        
  40. accion = 'enviar'
  41.  
  42. while True:
  43.         if accion == 'enviar':
  44.                 enviar()
  45.         elif accion == 'recibir':
  46.                 recibir()
  47.         accion = cambiar(accion)


k2.py

Código: Python
  1. #uso: python k2.py ip_a_comunicar (se admite 127.0.0.1)
  2. # by blozzter.
  3.  
  4. import sys, socket
  5.  
  6. ip = sys.argv[1]
  7.  
  8. def enviar():
  9.         s = socket.socket()
  10.         s.connect((ip, 9999))  #se conecta a esa ip
  11.         mensaje = raw_input("[>] ")
  12.         s.send(mensaje)
  13.         if mensaje == "quit":
  14.                 print 'bye bye'
  15.                 s.close()
  16.                 sys.exit()
  17.                
  18. def recibir():
  19.         s = socket.socket()
  20.         s.bind(("", 9998))
  21.         s.listen(1)
  22.         sc, addr = s.accept()
  23.        
  24.         recibido = sc.recv(1024)
  25.         if recibido == "quit":
  26.                 print 'bye bye'
  27.                 sc.close()
  28.                 s.close()
  29.                 sys.exit()
  30.         print "Recibido:", recibido
  31.         sc.send(recibido)
  32.        
  33. def cambiar(word):
  34.         if word == 'enviar':
  35.                 word = 'recibir'
  36.         elif word == 'recibir':
  37.                 word = 'enviar'
  38.         return word
  39.        
  40. accion = 'recibir'
  41.  
  42. while True:
  43.         if accion == 'enviar':
  44.                 enviar()
  45.         elif accion == 'recibir':
  46.                 recibir()
  47.         accion = cambiar(accion)
  48.  


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.
« Última modificación: Marzo 23, 2015, 12:10:09 pm por Expermicid »
¡< blozzter >!

Desconectado JaAViEr

  • *
  • Underc0der
  • Mensajes: 163
  • Actividad:
    0%
  • Reputación 0
  • http://codigo.ga
    • Ver Perfil
    • Blog de Programación :: Python
« Respuesta #1 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.
You are not allowed to view links. Register or Login

Desconectado blozzter

  • *
  • Underc0der
  • Mensajes: 106
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • blozzter-blz
« Respuesta #2 en: Agosto 29, 2011, 04:21:39 pm »
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 >!

 

¿Te gustó el post? COMPARTILO!



[Código] Yardas a metros - Metros a yardas [Python]

Iniciado por LucaSthefano

Respuestas: 0
Vistas: 1141
Último mensaje Mayo 29, 2011, 01:27:34 am
por LucaSthefano
[Código] Entero / No Entero [Ejercicio - Python]

Iniciado por LucaSthefano

Respuestas: 0
Vistas: 1097
Último mensaje Mayo 29, 2011, 01:24:09 am
por LucaSthefano
[Código-Python] If file exists Python puro - JaAViEr

Iniciado por JaAViEr

Respuestas: 5
Vistas: 1634
Último mensaje Agosto 21, 2011, 09:29:56 pm
por blozzter
[Introducción+código] Introducción al Manejo de Bases de Datos MySQL en Python

Iniciado por blozzter

Respuestas: 2
Vistas: 1546
Último mensaje Noviembre 04, 2011, 06:05:29 pm
por blozzter
[Código-Python] Code & Decode Archivo a HEX - JaAViEr

Iniciado por JaAViEr

Respuestas: 2
Vistas: 1133
Último mensaje Agosto 01, 2011, 09:35:42 pm
por JaAViEr