Foros del Web » Programando para Internet » PHP »

Ayuda con socket_close() en PHP CLI.

Estas en el tema de Ayuda con socket_close() en PHP CLI. en el foro de PHP en Foros del Web. Saludos a todos, Mi problema es el siguiente, estoy comenzando a aprender sobre programación de sockets con PHP5 desde la línea de comandos, este es ...
  #1 (permalink)  
Antiguo 08/09/2010, 07:51
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1
Antigüedad: 11 años, 9 meses
Puntos: 0
Ayuda con socket_close() en PHP CLI.

Saludos a todos,

Mi problema es el siguiente, estoy comenzando a aprender sobre programación de sockets con PHP5 desde la línea de comandos, este es el código que intento implementar:

Código PHP:
#!/usr/bin/php

<?php 
// Set time limit to indefinite execution 
set_time_limit (0); 

// Set the ip and port we will listen on 
$address '190.170.130.24'
$port 9954

// Create a TCP Stream socket 
$sock socket_create(AF_INETSOCK_STREAM0) or die("No se pudo ni crear el socket.\n");

// Bind the socket to an address/port 
socket_bind($sock$address$port) or die("No se pudo asociar esa direccion o puerto al socket creado.\n");

// Start listening for connections 
echo "Escuchando... \n";
socket_listen($sock) or die("No se puede comenzar a escuchar \n");

/* Accept incoming requests and handle them as child processes */ 
$client socket_accept($sock) or die("No se puede aceptar conexiones \n"); 

// Read the input from the client; 1024 bytes 
$input socket_read($client1024) or die("No se puede leer lo recibido \n"); 
echo 
$input;
echo 
"\n";

// Strip all white spaces from input 
$output ereg_replace("[ \t\n\r]","",$input).chr(0); 

// Display output back to client 
socket_write($client$output) or die("No se puede mandar algo por la conexion \n"); 
socket_write($client"\nListo.\n") or die("No se puede mandar algo por la conexion \n"); 

// Termina de mandar data por el socket
while(!socket_shutdown($client,2)){}; //cierra las comunicaciones

// Cierra el socket hijo
while(socket_read($client,1)!=NULL){} //Terminando de leer del socket
socket_close($client) or die("No se puede cerrar el socket client \n");

// Close the master sockets 
while(!socket_shutdown($sock)){};
for(
$i=0;$i<100;$i++){
socket_close($sock);
sleep(1);}
?>
en un principio el código era más simple (no tenía las funciones socket_shutdown ni la parte de leer del socket hasta que el socket_read sea NULL) pero como no me cerraba nunca ni el socket $client ni el socket $sock pues lo he intentado de varias maneras, pero nada que se logra cerrar, el error que aparece es que el socket_close($client) muere, o sea aparece el mensaje "No se puede cerrar el socket client", y si comento esa línea de cerrar el socket cliente, pues al intentar cerrar el socket $sock me dice que sock no es un "valid socket resource"... He leído y buscado información por todos lados y he encontrado otras formas de cerrar los sockets de manera más segura pero ninguna me funciona... Alguien podría darme una pista de qué está pasando?.

Gracias y saludos a todos.

Etiquetas: cierra, cli, close, socket, time
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:45.