Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/10/2012, 16:50
Andyalonzo
 
Fecha de Ingreso: julio-2012
Ubicación: San Mateo Ixtatán, Huehuetenango, Guatemala
Mensajes: 12
Antigüedad: 12 años, 4 meses
Puntos: 0
PHP envia socket a Python pero no recibe respueta

Estoy tratando de hacer una pagina web que se envíe mensajes a un script echo en python.

Cuando envío un mensaje desde la pagina (php) lo recibe el programa de python, pero cuando envío una respuesta (desde python) me da este error>

Código Python:
Ver original
  1. s.send(respuesta)
  2. error: [Errno 10057] A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied

estos son los codigos que estoy usando:
mensaje.php
Código PHP:
Ver original
  1. <?php
  2. if(isset($_POST['mensaje'])){
  3. $host = "localhost";
  4. $port = 9999;
  5. $output=$_POST['mensaje'];
  6. $socket1 = $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket\n");
  7. socket_connect ($socket1 , $host,$port ) ;
  8. #Envia el mensaje (Esto si funciona)
  9. socket_write($socket1, $output, strlen ($output)) or die("Could not write output\n");
  10. $tamaño=3072;
  11. $salida=socket_read($socket1,$tamaño);
  12. echo $output;
  13. echo 'R:>>';
  14. echo $salida.'\n';
  15. socket_close($socket1) ;
  16. }
  17.  
  18. ?>
  19. <form action="" method="post">
  20. <input name="mensaje" type="text" value="">
  21. <input name="" type="submit"></form>

mensaje.py
Código Python:
Ver original
  1. #!/usr/bin/python
  2.  
  3. import socket
  4. import subprocess
  5.  
  6.  
  7. #s = socket.socket()
  8. s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  9. s.bind(("localhost", 9999))
  10. s.listen(30)
  11. sc, addr = s.accept()
  12. res = socket.socket()
  13. while True:
  14.     try:
  15.         recibido = sc.recv(255)
  16.     except:
  17.         recibido = None
  18.     if recibido != None:
  19.         print recibido
  20.         if recibido == "fin":
  21.             s.send('Conexio Cerrada')
  22.             break
  23.         else:
  24.             respuesta = raw_input('R: >>')
  25.         s.send(respuesta)
  26.         print resultado
  27.         print ('_')*30
  28.     else:
  29.         s = socket.socket()
  30.         s.bind(("localhost", 9999))
  31.         s.listen(30)
  32.         sc, addr = s.accept()
  33.  
  34. sc.close()
  35. s.close()

Gracias de Antemano Muchá