Pipes


Pipe

They provide communication between two programs to exchange data. The programs may be in the same computer or in different computers in the Internet as shown in the figure.
Estas proporcionan comunicación entre dos programas para intercambiar datos. Los programas pueden estar en la misma computadora o en computadoras diferentes en la Internet como se muestra en la figura.

Pipe Name

Each pipe must have a special name to identify the pipe. There is a specific format for a pipe name. The figure below shown a pipe called TimeService. In the first figure, the pipe will be accessed in the same computer which is indicated by a dot. In the second figure, the pipe will be remotely accessed, so the IP address of the server name can be used. As the backslash is an escape sequence in several programming languages, you must add an extra backslash when writing the pipe name in code. Note, however, that if the user types the pipe name inside a textbox, the user does not need to provide the extra backslash.
Cada tubo debe tener un nombre especial para identificar el tubo. Hay un formato específico para los nombres de los tubos. La figura de abajo muestra un tubo llamado TimeService. En la primer figura, el tubo será accesado en la misma computadora lo cual se indica por un punto. En la segunda figura, el tubo será accesado en forma remota, así la dirección de IP o el nombre del servidor pueden usarse. Como la diagonal invertida es una secuencia de escape en varios lenguajes de programación, usted debe agregar una diagonal invertida extra cuando usted escriba el nombre del tubo en código. Observe, sin embargo, que si el usuario escribe el nombre del tubo dentro de una caja de texto, el usuario no necesita proporciona la diagonal invertida extra.

PipeName

Server Pipe

Wintempla provides the Sys::Pipe class and the Sys::NamedPipe class to ease the use of pipes. If you do not want to use Wintempla, you may inspect these two classes to learn how pipes can be used in its most basic way. A server pipe waits for client requests. To create a server pipe you may call the pipe.CreateServer function which takes three parameters:
  1. A pipe name
  2. The number of bytes that will be transferred
  3. The number of milliseconds that the program will wait before the command executes before reporting an error.
The figure below shows how a pipe provides program communication. One process (Program A in this figure) writes to the pipe and the other process (Programa B in this figure) reads from the pipe. If the pipe buffer fills up, the writing operating will block the execution on Program A. If there is not data available, a read operation will block the execution on Program B.
Wintempla proporciona la clase Sys::Pipe y la clase Sys::NamedPipe para facilitar el uso de las pipes. Si usted no quiere usar Wintempla para usar Pipes usted puede ver el código de estas clases para aprender cómo funcionan las pipes en su forma más básica. Una pipe del tipo servidor se encuentra en espera de solicitud hechas por un cliente. Para crear un tubo del tipo servidor se manda llamar la función pipe.CreateServer la cual toma tres parámetros:
  1. El nombre del tubo
  2. El número de bytes que se transferirán.
  3. El número de milisegundos que se puede esperar para el comando se ejecuta antes de reportar un error.
La figura de abajo muestra como un tubo proporciona comunicación entre programas. Un proceso (El Programa A en esta figura) escribe en la Pipe y el otro proceso (El Programa B en esta figura) lee desde la Pipe. Si el buffer de la Pipe se llena, la operación de escritura bloqueará la ejecución en el Programa A. Si no hay datos disponibles, una operación de lectura bloqueará la ejecución en el Programa B.

Pipe

Tip
Pipes may not completely compatible among programming languages and operative systems, so when cross platform application are developed sockets are preferred over pipes.
Un tubo puede no ser completamente compatible entre los lenguajes de programación o los diferentes sistemas operativos, de esta forma cuando se desarrollan aplicaciones multiplataforma los sockets son preferidos sobre los tubos.

Flushing a Pipe

A pipe can queue several Writes. The pipe may gradually send the data to the other input-output device, or you can use the Flush command to force all pending operations to complete.
Una pipe es un tubo en el que se pueden realizar varios comandos Write los cuales se van acumulando para su ejecución. El tubo puede irse vaciando gradualmente según el dispositivo de entrada o de salida lo permita o bien se puede ocupar el comando Flush para forzar la ejecución de las operaciones de entrada-salida pendientes.

© Copyright 2000-2019 Wintempla selo. All Rights Reserved. Sep 05 2019. Home