Foros del Web » Programando para Internet » PHP »

pasando file descriptor

Estas en el tema de pasando file descriptor en el foro de PHP en Foros del Web. hola. tengo un proceso-server que "escucha" peticiones por un fifo. cada cliente abre SU propio fifo y envia el file descriptor al proceso-server para que ...
  #1 (permalink)  
Antiguo 31/10/2007, 23:31
 
Fecha de Ingreso: abril-2007
Mensajes: 79
Antigüedad: 17 años
Puntos: 0
pasando file descriptor

hola.

tengo un proceso-server que "escucha" peticiones por un fifo.

cada cliente abre SU propio fifo y envia el file descriptor al proceso-server para que le escriba la respuesta.

el proceso-server recibe el file descriptor PERO dice que no puede escribir en el.


hay alguna solucion?

gracias
  #2 (permalink)  
Antiguo 31/10/2007, 23:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: pasando file descriptor

Publica el codigo que estas utilizando, lo mas seguro es la forma de abrir el arreglo.

Saludos.
  #3 (permalink)  
Antiguo 01/11/2007, 00:44
 
Fecha de Ingreso: abril-2007
Mensajes: 79
Antigüedad: 17 años
Puntos: 0
Re: pasando file descriptor

hola.

en el cliente.

$serv_fifo_fd= fopen("serv_fifo", "r+");
$cli_fifo_fd= fopen("cli_fifo", "r+");

fwrite($serv_fifo, $cli_fifo_fd);
sleep(1);
echo fread($cli_fifo_fd, 32);

fclose($cli_fifo_fd);
fclose($serv_fifo_fd);



en el server.

$serv_fifo_fd= fopen("serv_fifo", "r+");
while(1)
{
$fd= fread($serv_fifo_fd 32);

fwrite($fd, "hola"); // aqui da e error
}

fclose($serv_fifo_fd);


el error que me da en el proceso server es:
"warning: fwrite(): supplied argumentis not valid stream resource in ..."

gracias.
  #4 (permalink)  
Antiguo 01/11/2007, 09:10
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: pasando file descriptor

Tenés varios errores con los argumentos de las funciones...

Código PHP:

$serv_fifo_fd
fopen("serv_fifo""r+");
$cli_fifo_fdfopen("cli_fifo""r+");

//$serv_fifo no está definida acá...
//$cli_fifo_fd es un resource, y tiene que ser un string
// están al revés, quizás?
fwrite($serv_fifo$cli_fifo_fd);
sleep(1);
echo 
fread($cli_fifo_fd32);

fclose($cli_fifo_fd);
// para que abriste esta conexión, si no la usaste?
// quizás en alguna parte del código q no mostrás...
fclose($serv_fifo_fd);



// en el server.

$serv_fifo_fdfopen("serv_fifo""r+");
while(
1)
{
// falta una coma... es un error de transpaso al foro, supongo...
$fdfread($serv_fifo_fd 32);

// $fd es un string q leiste...
// el primer argumento tiene que ser un resource q devuelve fopen
fwrite($fd"hola"); // aqui da e error
}

fclose($serv_fifo_fd); 
  #5 (permalink)  
Antiguo 01/11/2007, 09:50
 
Fecha de Ingreso: abril-2007
Mensajes: 79
Antigüedad: 17 años
Puntos: 0
Re: pasando file descriptor

hola.

si, son errores de sintaxis cuando postee el comentario.

de todas formas gracias por la respuesta.

la unica solucion que he encontrado es pasarle al server el nombre del fifo por donde escucharia el cliente, y el server tendria que abrir "el otro extremo"(su FD) para enviar la respuesta.

preguntaba sobre "pasar el file descriptor" para que el proceso servidor no abriera(fopen) ni cerrara(fclose) la fifo del cliente y sea mas bien este, el que lo haga ya que podrian haber varios clientes haciendo peticiones.

lo que buscaba era que el server solo envie el mensaje por un file descriptor YA abierto por el cliente.

si alguien tuviera alguna otra idea...


gracias
saludos
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 10:11.