Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/12/2013, 10:35
roberkas98
 
Fecha de Ingreso: noviembre-2013
Mensajes: 61
Antigüedad: 11 años, 1 mes
Puntos: 0
Chat sencillo TCP

Bueno la cosa es que quiero crear un chat para ver como van los sockets y demás, la cosa es que si no escribo nada y lo envio se corta la comunicacion.Lo he intentado solucionar pero no he conseguido nada.
Aqui dejo los codigos:

CLIENTE
Código Python:
Ver original
  1. #!/usr/bin/env python
  2.  
  3. import socket
  4.  
  5. # creamos el socket
  6. clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  7. # ahora acemos que se conecte con el servidor
  8. clientsocket.connect(('localhost',8000))
  9.  
  10. # este bucle hace que mientras este conectado  haga lo que pone en el interior
  11. while 1:
  12.         data = raw_input('>') #funcion que hace que podamos escribir para mandarlo posteriormente
  13.         if data != " ":  # si no ai datos no lo envia
  14.             clientsocket.send(data)# enviamos los datos que hemos escrito
  15.         else:
  16.               print "No has escrito nada"
  17.         newdata = clientsocket.recv(1024) # recibimos los datos que envie el servidor
  18.         print 'servidor: %s' % newdata # y con esto lo escribimos en pantalla
  19. clientsocket.close() # cerramos el socket

SERVIDOR
Código Python:
Ver original
  1. #!/usr/bin/env python
  2.  
  3. import socket
  4.  
  5. # creamos el socket
  6. serversocket    =   socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  7. # usamos esta funcion para mantener en eschucha el puerto que queramos este caso 8000
  8. serversocket.bind(('localhost', 8000))
  9. # mantenemos en escucha el servidor
  10. serversocket.listen(1)
  11. # aceptamos la conexion
  12. clientsocket, clientaddress = serversocket.accept()
  13. print 'Conexion desde: ', clientaddress # escribimos la ip del cliente
  14. # mientras estamos conectados hace lo que este dentro del bucle
  15. while 1:
  16.         data = clientsocket.recv(1024) # recibimos datos del cliente
  17.         print 'cliente %s' % data # ponemos en pantalla lo que nos a dicho el cliente
  18.         newdata = raw_input('>') # escribimos lo que queramos enviar
  19.         if  newdata != " ":  # si no hay datos no lo enviamos
  20.           clientsocket.send(newdata) # enviamos lo que hemos escrito                
  21. clientsocket.close() # cerramos el socket