W&T conecta
Interfaces para TCP/IP, Ethernet, RS-232, RS-485, USB, 20mA, fibra óptica de vidrio y de plástico, http, SNMP, OPC, Modbus TCP, I/O digital, I/O analógico, ISA, PCI

Aplicación:

Servidor TCP Echo con PHP


Ejecución de un script PHP en la recepción de datos en un puerto TCP.

La pure.box2 está en situación de reaccionar activando un script PHP al recibir datos (transmisión vía TCP o UDP). Los datos recibidos pueden ser leídos y procesados vía PHP (p. ej. respuesta a fuente de datos, reenvío a través de la red o almacenamiento en una base de datos interna en la box). El interpretador de PHP trabaja aquí exclusivamente "bajo cubierta" y no genera una salida clásica en forma de página web. Esta función permite la realización de aplicaciones de servidor sencillas únicamente con el uso de técnicas web.

Planteamiento

Para probar una conexión de red debe configurarse en la pure.box2 un servidor echo de escucha en el puerto TCP 8000. Los datos enviados a ese puerto deben ser devueltos a su fuente sin modificar.

El archivo PHP necesario para realizar este ejemplo echo.php puede ser descargado aquí.

Configuración de pure.box2

Guarde el archivo echo.php vía FTP o bien a través del recurso compartido SMB en la carpeta programs en la pure.box 2. A continuación son necesarios los siguientes pasos de configuración:

  • Entre en la página de inicio de pure.box2 introduciendo la dirección IP en el campo de dirección de su navegador.

    Página Web de Motherbox
  • Seleccione Registrar en los menús y regístrese a través de la ventana de diálogo abierta con su contraseña.

    Ventana de login de Motherbox
  • Navegue por la página Home >> Configuración >> Mis documentos. Dentro del listado general de archivos pulse en la carpeta programs. El archivo echo.php está ahora visible.

    Navegador de archivos Motherbox
  • Un clic sobre el icono Editar propiedades de archivos (arriba a la izquierda echo.php) abre la ventana de editar.

    Editar propiedades de archivos
  • Active la opción Control sucesos. Seleccione TCP y cambie el puerto a 8000. Confirme los cambios con Guardar...¡Listo!

    Control de sucesos

Ahora cuando se envíen datos al puerto TCP-Port 8000 de pure.box2, éstos serán devueltos a su emisor. Requisito para el retorno es la recepción de un cambio de línea (LF / tecla Return) como carácter final. En general se debe prestar atención a que la ejecución del intérprete de PHP finalice automáticamente al cabo de dos minutos. Por tanto la acción programada debería ser ejecutable en el tiempo más breve.

Texto fuente

En las primeras dos líneas se abre la entrada estándar para la lectura y la salida estándar para la escritura de datos.


							$in = fopen('php://stdin', 'r');
							$out = fopen('php://stdout', 'w');

En un bucle tiene lugar la lectura de los datos entrantes por caracteres, añadiéndose las variables de la cadena $input. Del bucle se sale cuando se detecta un cambio de línea (Line Feed, tabla ASCII: 10).


							$input = '';
							do
								{
								$input .= fread($in, 1);
								}
							while(substr($input, -1, 1) != chr(10));

Tras la recepción se envía de vuelta la cadena leída a la fuente de datos inicial a través de la salida estándar.

fwrite($out, $input);

A continuación se cierra de nuevo tanto la entrada como la salida estándar.


							fclose($in);
							fclose($out);

Con ello el script PHP queda completamente cerrado y se sale de él. El script se reinicia cuando se reciben datos de nuevo, ejecutándose como se ha descrito más arriba.

Resumen

Con la pure.box2 pueden realizarse aplicaciones de servidor sencillas tan solo conociendo el PHP. La función de servidor ya es parte integrante de la box. Solo falta programar la acción a ejecutar al recibir los datos.