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);
}
}
}
}
?> |