Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: tonder en 29 Marzo 2007, 20:44 pm



Título: Mi servidor se detiene!
Publicado por: tonder en 29 Marzo 2007, 20:44 pm
hola Colegas foristas!, estoy haciendo mis primeras armas en cuestiones Web!, Cree un socket en PHP y el "Servidor" lo pongo a trabajar pero despues de un corto tiempo el servidor se detiene, como hago para que no se detenga?, hay una instruccion que se supone evita que se detenga, pero igual ocurre. Estoy trabajando desgraciadamente con Windows por aquello con el IIS, ah! aca les dejo el codigo talves le sirva de algo a alguien mas!.

Código:
<html>
<head>
<title>Mi servidor</title>
</head>
<body>
<center><h1>Mi servidor</h1></center>
<?php
//muetra todos los errores que se presenten durante la ejecucion
error_reporting(E_ALL);
//Desabilia el tiempo de espera del scrip para permitir esperar conexiones.
set_time_limit(0);
//direccion de la maquina
$direccion = 'localhost';
//puerto de salida
$puerto = 10000;
//Crea el socket, recibe (dominio, tipo y protocolo) establecido por constates definidas por php
if (($socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0)
{
  echo "socket_create() Falló: Motivo: " . socket_strerror($puerto) . "<br>";
}
//Asocia la direccion y puerto de la maquina con el socket creado
if (($retorno = socket_bind($socket, $direccion, $puerto)) < 0)
{
  echo "socket_bind() Falló: Motivo: " . socket_strerror($retorno) . "<br>";
}
//Pone el socket a escuchar solicitudes de conexión
if (($retorno = socket_listen($socket, 5)) < 0)
{
  echo "socket_listen() Falló: Motivo: " . socket_strerror($retorno) . "<br>";
}
//el socket acepta la primer solicitud del cliente
do
{
  if (($sock_acepted = socket_accept($socket)) < 0)
  {
     echo "socket_accept() Falló: Motivo: " . socket_strerror($sock_acepted) . "<br>";
  }
  //una vez aceptada la conexión se lee el primer paquete que escriba el cliente
  $lectura = socket_read($sock_acepted, 2048);
  //imprime lo que el cliente dice
  echo "<b>Cliente dice: </b>" . $lectura . "<br>";
  //Escribe al cliente una respuesta a lo que este dijo!
  $escritura = 'Hola cliente!!!' . ' Me mandaste a decir: '. $lectura;
  socket_write($sock_acepted, $escritura, 2048);
  //cierra el socket
 
  if ($lectura=="salir")
  {
    break;
  }
}while(true);

socket_close($socket);
?>
</body>
</html>


Título: Re: Mi servidor se detiene!
Publicado por: Ertai en 3 Abril 2007, 19:52 pm
Hola.

Puedes explicar un poco más tu problema?

Desde donde envias los datos? Este es el archivo que los recoje, cierto?

Yo creo que tu problema es el while(true) aunque no te lo puedo asegurar. Creo que de alguna manera el servidor intenta NO quedarse en bucle infinito, ya que sino cualquiera podría saturar un servidor creando un bucle infinito.

Detalla un poco más tu problema e intentamos ayudarte.

PD: Las respuestas que he borrado, las he borrado porque no me parece una respuesta correcta decir que Windows es el problema y quedarse tan ancho, lo siento, pero para decir algo así, falta aportar argumentos. No soy pro nada ni anti nada, pero respuestas asi no valen. Esto esta mas que hablado en el staff.