Bueno probé el código y el problema es que si el usuario no ingresa nada en el cliente, no vovlés a preguntar, entonces se queda esperando una respuesta a un mensaje que nunca fué enviado. Así que deberías reemplazar esto:
   
Código Python:
Ver originalif data != " ":  # si no ai datos no lo envia
    clientsocket.send(data)# enviamos los datos que hemos escrito
else:
      print "No has escrito nada"
  
Por esto:   
Código Python:
Ver originalif data:  # si no ai datos no lo envia
    clientsocket.send(data)# enviamos los datos que hemos escrito
else:
    print "No has escrito nada, vuelve a intentarlo."
    continue # Vuelve a comenzar el bucle
  
Por cierto tenes como medio una ensalada de espacios en el código, a veces haces indentaciones de 8 espacios y a veces de 2, selecciona un patrón y seguilo en todo el código, aunque lo más común es usar 4 espacios. 
Espero que te sirva!