Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/03/2012, 15:11
Mondain
 
Fecha de Ingreso: septiembre-2010
Mensajes: 17
Antigüedad: 13 años, 8 meses
Puntos: 3
Programar un socket

Buenos dias,

Necesito recibir informacion en mi servidor web y almacenarla en base de datos.

Estuve haciendo la prueba con un socket en php, y en localhost y desde otra computadora de mi red, funciona perfectamente por medio de un telnet.

Lo que no se si esto realmente me sirve, primero porque la informacion viene de un dispositivo GPS que me envia la informacion por TCP, o UDP.

Entonces me gustaria que me ayudaran a hacer un socket para correr en mi servidor. El que tengo actualmente es este, pero solo me sirve por telnet local.

Saludos.

Código:
<?php
error_reporting(E_ALL);

/* Permitir al script esperar para conexiones. */
set_time_limit(0);

/* Activar el volcado de salida implícito, así veremos lo que estamo obteniendo
 * mientras llega. */
ob_implicit_flush();

$address = '192.168.1.103';
$port = 8080;

if (($sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP)) === false) {
    echo "socket_create() falló: razón: " . socket_strerror(socket_last_error()) . "\n";
}

if (socket_bind($sock, $address, $port) === false) {
    echo "socket_bind() falló: razón: " . socket_strerror(socket_last_error($sock)) . "\n";
}

if (socket_listen($sock, 5) === false) {
    echo "socket_listen() falló: razón: " . socket_strerror(socket_last_error($sock)) . "\n";
}

do {
    if (($msgsock = socket_accept($sock)) === false) {
        echo "socket_accept() falló: razón: " . socket_strerror(socket_last_error($sock)) . "\n";
        break;
    }
    /* Enviar instrucciones. */
    $msg = "\nBienvenido al Servidor De Prueba de PHP. \n" .
        "Para salir, escriba 'quit'. Para cerrar el servidor escriba 'shutdown'.\n";
    socket_write($msgsock, $msg, strlen($msg));

    do {
        if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
            echo "socket_read() falló: razón: " . socket_strerror(socket_last_error($msgsock)) . "\n";
            break 2;
        }
        if (!$buf = trim($buf)) {
            continue;
        }
        if ($buf == 'quit') {
            break;
        }
        if ($buf == 'shutdown') {
            socket_close($msgsock);
            break 2;
        }
        $talkback = "PHP: Usted dijo '$buf'. \n";
        socket_write($msgsock, $talkback, strlen($talkback));
        echo "$buf\n";

		
    } while (true);
    socket_close($msgsock);
} while (true);

socket_close($sock);
?>
Si tienen hecho alguno en otro lenguaje y me explican como ponerlo a correr todo el tiempo, bienvenido sea.

Saludos y muchas gracias por su tiempo.