Introducción
No todo en PHP es Web y HTTP. Podemos usar PHP para muchas otras cosas. Por ejemplo podemos crear de una forma muy sencilla servicios de red. Cuando creamos servicios de red necesitamos obviamente un servidor de red (bien sea TCP o UDP).Cuando trabajamos con Web y HTTP este servidor suele ser Apache (o similares), pero si queremos crear un servicio específico (no HTTP), además del servicio de red que queramos crear, necesitaríamos crear un servidor.
No todo en PHP es Web y HTTP. Podemos usar PHP para muchas otras cosas. Por ejemplo podemos crear de una forma muy sencilla servicios de red.Esto lo podemos hacer con C, Java e incluso con PHP, pero cuando trabajamos en entornos Linux existe un daemon que nos permite desplegar servicios de red de una forma muy sencilla, encargándose de la parte del servidor y dejándonos a nosotros la parte del servicio de red. Este daemon es xinetd.
Vamos a ver cómo crear un sencillo servicio de red TCP con xinetd y PHP… ¡Empecemos!
Creando el servicio de red TCP con Xinetd y PHP
El ejemplo que vamos a realizar escuchará del puerto 69321, e inicialmente dirá “Hola” cuando alguien realice una petición TCP a dicho puerto. El script del ejemplo es sumamente complicado:- // /home/gonzalo/tests/test1.php
- echo "HELLO\n";
- // /etc/services
- ...
- myService 60321/tcp # my hello service
- # default: on
- # description: my test service
- service myService
- {
- socket_type = stream
- protocol = tcp
- wait = no
- user = gonzalo
- server = /usr/local/bin/php-cli
- server_args = /home/gonzalo/tests/test1.php
- log_on_success += DURATION
- nice = 10
- disable = no
- }
- sudo /etc/init.d/xinetd restart
- telnet localhost 60321
- Trying ::1...
- Trying 127.0.0.1...
- Connected to localhost.
- Escape character is '^]'.
- Hola
- Connection closed by foreign host.
Lo que tenemos que hacer es leer del stdin. En PHP, al igual que con otros lenguajes, esto es muy sencillo:
- $handle = fopen('php://stdin','r');
- $input = fgets($handle);
- fclose($handle);
- echo "Hola {$input}";
- telnet localhost 60321
- Trying ::1...
- Trying 127.0.0.1...
- Connected to localhost.
- Escape character is '^]'.
- gonzalo
- Hola gonzalo
- Connection closed by foreign host.
Conclusión
Y esto es todo. Con este sencillo script vemos que, si bien PHP es un lenguaje destinado principalmente para el desarrollo Web, podemos usarlo para otras cosas, manteniendo su punto fuerte: la sencillez.¿Para qué nos puede servir esto? Bueno. Para empezar nos sirve para leer datos de dispositivos de red que tengamos por ahi, como báculas, lectores de tarjetas, sensores… Muchos de estos dispositivos suelen permitirnos en su configuración establecer una IP/puerto a la que van a enviar información en forma de trama TCP.
También podemos usarlo para comunicar procesos de una manera simple, sin necesidad de meternos con servidores XMLRPC/Soap y demás. En fin que es una herramienta más que tenemos a nuestra disposición para afrontar nuestros desarrollos.
Fuente: Link
2 comentarios:
Que bueno!
Como se podría hacer algo equivalente en Windows?
Que bueno!
Cómo se podría hacer algo similar en Windows con un Xampp?
Saludos.
Publicar un comentario