Foros del Web » Programando para Internet » PHP »

PHP i los sockets

Estas en el tema de PHP i los sockets en el foro de PHP en Foros del Web. Ei buenas! A ver si alguien me puede echar una mano.. Intento montar un servidor de sockets en php, pero a la hora de ponerlo ...
  #1 (permalink)  
Antiguo 03/01/2008, 14:34
 
Fecha de Ingreso: enero-2008
Mensajes: 6
Antigüedad: 16 años, 10 meses
Puntos: 0
PHP i los sockets

Ei buenas!

A ver si alguien me puede echar una mano..

Intento montar un servidor de sockets en php, pero a la hora de ponerlo a prueba solo funciona en localhost. Si intento acceder a traves de ip publica o privada con telnet no me va.
I lo peor es ke con un servidor de distribucion, si que me abre los puertos i puedo acceder con el telnet.

Alguna idea de ke puede pasar? ?¿?

Gracias!
  #2 (permalink)  
Antiguo 03/01/2008, 23:33
Avatar de walo  
Fecha de Ingreso: mayo-2004
Mensajes: 310
Antigüedad: 20 años, 5 meses
Puntos: 0
Re: PHP i los sockets

Poco clara tu descripcion. No se a que te refieres con "servidor de sockets". El servidor tiene firewall ?
  #3 (permalink)  
Antiguo 04/01/2008, 12:43
 
Fecha de Ingreso: enero-2008
Mensajes: 6
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: PHP i los sockets

Hola!

Me refiero a la creacion de un socket i un bucle ke espera conexiones. Es el tipico ejemplo que hay en los tutoriales sobre sockets. Tu lo ejecutas i por telnet por ejemplo puedes acceder al puerto que tienes abierto.

No tiene firewall, he redireccionado los puertos del router, creo ke lo he echo todo.

El codigo, como he dixo es el de un tutorial normal i corriente de internet.

Aqui esta. Por si lo quereis mirar o probar.

gracias!!


#!/usr/bin/php -q
<?php

error_reporting(E_ALL);
set_time_limit(0);
ob_implicit_flush();

$address = 'localhost';
$port = 5222;

function send_Message($allclient, $socket, $buf) {
foreach($allclient as $client) {
socket_write($client, "$socket wrotecaaaaaaaaca: $buf");
}
}

if (($master = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
echo "socket_create() failed, reason: " . socket_strerror($master) . "\n";
}
socket_set_option($master, SOL_SOCKET,SO_REUSEADDR, 1);

if (($ret = socket_bind($master, $address, $port)) < 0) {
echo "socket_bind() failed, reason: " . socket_strerror($ret) . "\n";
}

if (($ret = socket_listen($master, 5)) < 0) {
echo "socket_listen() failed, reason: " . socket_strerror($ret) . "\n";
}

$read_sockets = array($master);

while (true) {
$changed_sockets = $read_sockets;
$num_changed_sockets = socket_select($changed_sockets, $write = NULL, $except = NULL, NULL);

foreach($changed_sockets as $socket) {
if ($socket == $master) {

if (($client = socket_accept($master)) < 0) {
echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
continue;
} else {
array_push($read_sockets, $client);
}
} else {

$bytes = socket_recv($socket, $buffer, 2048, 0);
if ($bytes == 0) {
$index = array_search($socket, $read_sockets);
unset($read_sockets[$index]);
socket_close($socket);
}else{
$allclients = $read_sockets;
array_shift($allclients);
send_Message($allclients, $socket, $buffer);
}
}

}
}

?>
  #4 (permalink)  
Antiguo 07/01/2008, 05:50
 
Fecha de Ingreso: enero-2008
Mensajes: 6
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: PHP i los sockets

ya esta!

gracias, solo habia ke poner la ip privada en el servidor. Yo no la ponia :p
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 13:04.