Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/07/2009, 15:20
Avatar de maycolalvarez
maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 18 años, 3 meses
Puntos: 1532
Respuesta: como detectar la ip y el puerto con php??

Puede que utilices la extensión de sockets de php y abras uno escuchando ese puerto, hasta ahora no lo he echo en php, sólo con C# porque es relativamente más rápido.

Ahh por cierto, todas las solicitudes HTML la recibe apache y son por el puerto 80, si utilizas apache, claro.

este es un código de ejemplo extraído del manual php:

Código PHP:
#!/usr/local/bin/php -q
<?php
error_reporting
(E_ALL);

/* Permitir que el script permanezca en espera de conexiones. */
set_time_limit(0);

/* Habilitar vaciado de salida implicito, de modo que veamos lo que
 * obtenemos a medida que va llegando. */
ob_implicit_flush();

$direccion = '192.168.1.53';
$puerto    = 10000;

if ((
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
    echo 
"socket_create() fall&oacute;: motivo: " . socket_strerror($sock) . "\n";
}

if ((
$ret = socket_bind($sock, $direccion, $puerto)) < 0) {
    echo 
"socket_bind() fall&oacute;: motivo: " . socket_strerror($ret) . "\n";
}

if ((
$ret = socket_listen($sock, 5)) < 0) {
    echo 
"socket_listen() fall&oacute;: motivo: " . socket_strerror($ret) . "\n";
}

do {
    if ((
$mens_sock = socket_accept($sock)) < 0) {
        echo 
"socket_accept() fall&oacute;: motivo " . socket_strerror($mens_sock) . "\n";
        break;
    }
    
/* Enviar instrucciones. */
    
$mensaje = "\nBienvenido al Servidor de Prueba PHP. \n" .
               
"Para salir, escriba 'salir'. " .
               
"Para detener el servidor, escriba 'detener'.\n";
    
socket_write($mens_sock, $mensaje, strlen($mensaje));

    do {
        if (
false === ($buf = socket_read($mens_sock, 2048, PHP_NORMAL_READ))) {
            echo 
"socket_read() fall&oacute;: motivo: " . socket_strerror($ret) . "\n";
            break 
2;
        }
        if (!
$buf = trim($buf)) {
            continue;
        }
        if (
$buf == 'salir') {
            break;
        }
        if (
$buf == 'detener') {
            
socket_close($mens_sock);
            break 
2;
        }
        
$respuesta = "PHP: Usted dijo '$buf'.\n";
        
socket_write($mens_sock, $respuesta, strlen($respuesta));
        echo 
"$buf\n";
    } while (
true);
    
socket_close($mens_sock);
} while (
true);

socket_close($sock);
?>