Foros del Web » Programando para Internet » PHP »

programación socket en php

Estas en el tema de programación socket en php en el foro de PHP en Foros del Web. Hola, me dirijo a vosotros por que me encontré con un problema que por más vueltas que le doy no encuentro la solución. Programe un ...
  #1 (permalink)  
Antiguo 09/09/2004, 05:32
 
Fecha de Ingreso: agosto-2004
Mensajes: 36
Antigüedad: 19 años, 8 meses
Puntos: 0
programación socket en php

Hola, me dirijo a vosotros por que me encontré con un problema que por más vueltas que le doy no encuentro la solución. Programe un script en php que hace de servidor y otro que hace de cliente, son programas simples que realizan una única función. El problema viene cuando intento conectarme con dos clientes al servidor, este echa a uno de los clientes para permitir la conexión al otro. Pensaba que el límite de conexiones se definía con la función socket_listen(), pero quizás interprete mal el funcionamiento de la misma... Estoy atascado aquí y no se como hacer para que me acepte más de una conexión simultaneamente.

server
Código PHP:
#!/usr/bin/php
<?php
/*
Ejemplo 3. Serividor socket en php que acepta conexiones
*/

// ELIMITANDO EL TIEMPO LIMITE DE EJECUCIÓN DE UN SCRIPT (DEFAULT 30s)
set_time_limit(0);

ob_implicit_flush();
// DEFINIENDO VARIABLES
$host "192.168.0.10";
$puerto "10001";

// ABRIENDO ARCHIVO DE LOG PARA LA ESCRITURA
$fp fopen ("error.log""a");

// CREANDO EL SOCKET: (IP PROTOCOL[IPV4], TYPE SOCKET[TCP], PROTOCOL[TCP])
if (!$socket = @socket_create(AF_INETSOCK_STREAMSOL_TCP)){
$log "Fallo en socket_create:".socket_strerror($socket)."\n";
fwrite ($fp$log);
print 
"Fallo al iniciar el servidor\n";
exit;}

// ASOCIANDO HOST Y PUERTO AL SOCKET
if (!$bind = @socket_bind($socket$host$puerto)){
$log "Fallo en socket_bind:".socket_strerror($bind)."\n";
fwrite ($fp$log);
print 
"Fallo al iniciar el servidor\n";
exit;}

// ESCUCHANDO LA CONEXIÓN DEL SOCKET
if (!$bind = @socket_listen($socket3)){
$log "Fallo en socket_listen:".socket_strerror($bind)."\n";
fwrite ($fp$log);
print 
"Fallo al iniciar el servidor\n";
exit;}

// ACEPTANDO LAS CONEXIONES SOCKET
while (TRUE) {
if (!
$accept = @socket_accept($socket)){
$log "Fallo en socket_accept:".socket_strerror($accept)."\n";
fwrite ($fp$log);
print 
"Fallo al aceptar conexiones\n";}

// MENSAJE DE ESTABLECIMIENTO DE CONEXIÓN
$buffer "\nConexión realizada\n";

// ESCRIBIMOS EN EL SOCKET EL MENSAJE DE ESTABLECIMIENTO DE CONEXIÓN
if (!@socket_write($accept$buffer)){
$log "Fallo al escribir en socket";
fwrite ($fp$log);}
}
?>
cliente
Código PHP:
#!/usr/bin/php
<?php
/*
Ejemplo 2, conexión via socket
*/

// DEFINICIÓN DE VARIABLES
$puerto 10001;
$host "192.168.0.10";

// CREANDO EL SOCKET: (IP PROTOCOL[IPV4], TYPE SOCKET[TCP], PROTOCOL[TCP])
$socket socket_create(AF_INETSOCK_STREAMSOL_TCP);
$conexion socket_connect($socket$host$puerto);

// DEFINICIÓN DE VARIABLES
$buffer "helo $host\r\n";
$salida ' ';

// ESCRIBIENDO EL BUFFER EN EL SOCKET
socket_write($socket$buffer);

// LEYENDO RESPUESTA DEL SOCKET
print "leyendo...\n";
while (
$salida socket_read($socket2048)){
echo 
$salida;}

// CERRANDO LA CONEXIÓN
socket_close($socket);
?>
__________________
Como aquel que calla otorga y aunque la ignorancia es sorda pude levantar la voz, más fuerte que los ladridos de los perros consentidos y que la voz del pastor.

Última edición por E*M*P*I*C*A*L; 09/09/2004 a las 05:34
  #2 (permalink)  
Antiguo 10/09/2004, 12:07
 
Fecha de Ingreso: agosto-2004
Mensajes: 36
Antigüedad: 19 años, 8 meses
Puntos: 0
Pues realmente estaba equivocado con respecto a la función socket_listen() pero resolví el problema usando la función socket_select(). Encontre un ejemplo bastante claro en esta dirección: http://dave.dapond.com/socketselect.php.txt

Gracias por vuestra atención.
__________________
Como aquel que calla otorga y aunque la ignorancia es sorda pude levantar la voz, más fuerte que los ladridos de los perros consentidos y que la voz del pastor.
  #3 (permalink)  
Antiguo 29/05/2008, 21:37
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Exclamación Respuesta: programación socket en php

Un gran duda que tengo sobre esto:

¿Para sirve? es decir para que se utilan soket en php por ejemplo el codigo de nuestro amigo.

que veneficio tiene? para que se emplean? en que casos?

me interesa este tema pero las dudas me inundan. jeje

gracias
__________________
Si la vida te da la espalda tocale el culo
  #4 (permalink)  
Antiguo 29/05/2008, 21:43
 
Fecha de Ingreso: marzo-2008
Mensajes: 28
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: programación socket en php

aprovecho para preguntar si este codigo va a funcionar en algun hosting gratuito, probe varios y ninguno funciona correctamente.

$ip2 = "1.1.1.1";
$onlinetext2 = "On-Line" ;
$offlinetext2 = "Off-Line" ;
$port = "1545";

if(@fsockopen($ip,$port,$errno,$errstr,1)) {
echo"AP2: "."<a href='http://$ip:$port' target='_blank'><img src='serveron.gif' width='16' height='15' border='0'></a> $onlinetext";
} else {
echo"AP2: "."<img src='serveroff.gif' width='16' height='15' border='0'> $offlinetext";
}


Slds!
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

SíEste tema le ha gustado a 3 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 20:53.