Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/07/2010, 15:35
ojg88
 
Fecha de Ingreso: julio-2010
Mensajes: 1
Antigüedad: 13 años, 9 meses
Puntos: 0
PHP socket en centos

Hola a todos.

Espero haber colocado esta duda en el lugar correcto, si no es asi, pido una disculpa.
Soy nuevo en el foro y me gustaria que me ayudaran con esta aplicacion que estoy haciendo. Mi consulta es la siguiente:

Estoy realizando una aplicación con socket entre un modulo rabbit (el RCM3720) esta se puede programar con socket para una comunicacion con una computadora.

El problema que tengo es que el script que tengo en la computadora hace un ciclo infinito cuano intetna aceptar las conexiones de la tarjeta.

Este es el script que utilizo:
echo "<h2>Conexion TCP/IP</h2>\n";
$sourceips['servidor'] = gethostbyname('servidor.ssthp.com');

// Obtener la direccion IP del host de destino.
$puerto = 80;
$direccion = gethostbyname('rabbit.ssthp.com');

// Crear un socket TCP/IP.
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

if($socket == FALSE)
{
//Describe el error al intentar conectar el socket
echo "socket_create() fallo al crear ";
$code = socket_last_error();
$error = socket_strerror($code);
die("Motivo: [$error] $errormsg");
}
else
if($socket == TRUE)
{echo "Socket OK---";}

//Asociando bind
$resultado = socket_bind($socket, $sourceips['servidor']);
if($resultado == FALSE)
{
//Describe el error al intentar conectar el socket
echo "Error en socket_bind()---";
$code = socket_last_error();
$error = socket_strerror($code);
die("Motivo: [$error] $errormsg---");
}
else
if($resultado == TRUE)
{echo "Bind OK---";}

// Establecer conexion
do{
$resultado = socket_create_listen(80);
if($resultado == FALSE)
{
//Describe el error al intentar escuchar peticion del host
echo "Error en socket_create_listen()---";
$code = socket_last_error();
$error = socket_strerror($code);
die("Motivo: [$error] $errormsg---");
break;
}
if($resultado == TRUE)
{echo "Peticion escuchada---";}

//Atendiendo peticiones
do{
$rabbit = socket_accept($resultado);
if($rabbit == FALSE)
{
//Describe el error al intentar conectar el socket
echo "Error en socket_accept()---";
$code = socket_last_error();
$error = socket_strerror($code);
die("Motivo: [$error] $errormsg---");
break;
}
if($rabbit == TRUE)
{
echo "Se acepto la peticion---";
socket_close($rabbit);
echo "Socket rabbit cerrado OK.\n\n";
}
}while(TRUE);
}while(TRUE);
echo "Socket cerrado OK.\n\n";
socket_close($socket);//*/
?>

Algo extraño es q si comento la funcion socket_accept() y lo corro en un pagina de internet este escucha una peticion aun con la tarjeta rabbit apagada.
Mi experiencia progrmando estos lenguajes en casi nula, puede que sea algo muy absurdo pero llevo varios intentos y no he obtenido resultados. Espero su respuesta y de antemano muchas gracias.