The PipeServer class is a lightweight server class based on an asynchronous, event-driven architecture. It is designed to balance the load between connections for a fast, powerful server.
PipeServer is the server complement of PipeClient (which is used to create client applications). They share a common design philosophy and interface. PipeServer is as easy to use as PipeClient.
The client connections are identified by a ConnectionId, an id generated by the component to identify each connection. This id is unique to each connection. PipeServer's events also have ConnectionId as a parameter to identify the connection to which they are related.
Our main goal in designing PipeServer was to make it easy to use without sacrificing performance. The class has a minimum of properties, and events: Connected, DataIn, Disconnected, ReadyToSend, and Error.
PipeServer can start to listen on a pipe by setting PipeName and then setting Listening to True. When a client connects the Connected event fires, a ConnectionId is assigned, and communication can start. From this point on, the operation is very similar to PipeClient. Data is sent by assigning the data string to the DataToSend property.
The following is the full list of the properties of the class with short descriptions. Click on the links for further details.
|ConnectionCount||The number of records in the arrays.|
|AcceptData||Setting this property to False, temporarily disables data reception (and the DataIn event) on the connection.|
|BytesSent||This property shows how many bytes were sent after the last assignment to DataToSend .|
|Connected||This property is used to disconnect individual connections and/or show their status.|
|ConnectionId||This property contains an identifier generated by the class to identify each connection.|
|DataToSend||This property contains a string of data to be sent to the remote host.|
|EOL||The EOL property is used to define boundaries in the input stream using the value of the property.|
|MaxLineLength||This property is the size of an internal buffer which holds received data while waiting for an EOL string.|
|SingleLineMode||This property shows the special mode for line-oriented protocols.|
|Timeout||This property specifies a timeout for the class.|
|DefaultEOL||A default EOL value to be used by incoming connections.|
|DefaultMaxLineLength||The default maximum line length value for inbound connections.|
|DefaultSingleLineMode||Tells the class whether or not to treat new connections as line-oriented.|
|DefaultTimeout||An initial timeout value to be used by incoming connections.|
|Listening||If True, the class accepts incoming connections.|
|PipeName||The name of the pipe.|
The following is the full list of the methods of the class with short descriptions. Click on the links for further details.
|Config||Sets or retrieves a configuration setting.|
|Disconnect||Disconnect the specified client.|
|DoEvents||Processes events from the internal message queue.|
|Interrupt||Interrupts a synchronous send to the remote host.|
|Send||Sends data to the remote host.|
|SendFile||Send file to the remote host.|
|SendLine||Sends a string followed by a newline.|
|Shutdown||Shuts down the server.|
The following is the full list of the events fired by the class with short descriptions. Click on the links for further details.
|Connected||Fired immediately after a connection completes.|
|DataIn||Fired when data comes in.|
|Disconnected||Fires when a client disconnects.|
|Error||Information about errors during data delivery.|
|ReadyToSend||Fired when the class is ready to send data.|
The following is a list of configuration settings for the class with short descriptions. Click on the links for further details.
|CustomSecurityDescription||A custom security descriptor to define access to the pipe.|
|InBufferSize||The size in bytes of the output buffer.|
|OutBufferSize||The size in bytes of the input buffer.|
|BuildInfo||Information about the product's build.|
|CodePage||The system code page used for Unicode to Multibyte translations.|
|LicenseInfo||Information about the current license.|
|ProcessIdleEvents||Whether the class uses its internal event loop to process events when the main thread is idle.|
|SelectWaitMillis||The length of time in milliseconds the class will wait when DoEvents is called if there are no events to process.|
|UseInternalSecurityAPI||Tells the class whether or not to use the system security libraries or an internal implementation.|