The most commonly used transport, TnxWinsockTransport represents a TCP/IP v4 connection over a network. The servername property is the DNS or alternatively takes the form servername@ip_address where servername@ is optional. Only one server can be assigned to a single port. The Winsock transport can also be connected to a connection filter component to limit access to particular ranges of client addresses.
For a TnxNamedPipeTransport the servername property takes the value servername@computername, where @computername is optional and defaults to the current computer if not specified. This transport is only available for use on NT or better systems on the server side, and is dependent on the security settings of the operating system.
The TnxNamedPipeTransport provides better performance than TnxWinsockTransport on a single computer, but slower over a network.
Both of these transports are implemented using overlapped IO and IO completion ports to minimise the number of threads required and thread context switches to process incoming requests.
The CallbackThreadCount property defaults to 0 and must be set > 0 to enable messages to be sent from the server back to the client. This property defines the number of concurrent callbacks that can be processed.
Key Properties
BroadcastThreadPriority |
Priority of the thread that answers broadcasts. Recommended to leave it alone. Default value (tpNormal) is a good balanced value. |
CallbackThreadCount |
Set on the client side. If set to greater than 0 then callbacks are possible. The value set is the number of concurrent threads on the client side. If the server has more callbacks then this value, it holds on to them until the number of threads on the client side is reduced. |
CallbackThreadPriority |
Priority of the thread that sends broadcasts. Recommended to leave it alone. Default value (tpNormal) is an excellent choice. |
CompressLimit |
This is the minimum message size in bytes before compression kicks in. |
CompressType |
This is the compression engine used. The number here represents the algorithm implemented. 0 = no compression. 1-9 are various zip compressions. 10 is the well-known RLE algorithm. If you want to use this, 1 is a good default to use over slow connections. Please note that for the compression to work, you need to include the actual implementation units (nxllZipCompressor, nxllRleCompressor) in the uses clause of both server and client (it is already compiled into the default server). |
ConcurrentIOCPThreads |
This is the number of threads on the server side processing client requests. If set to 0 then it defaults to the number of CPU's on the server. |
HeartbeatInterval |
This is the number of milliseconds between sending heartbeat messages to the server from the client side. |
HeartbeatThreadPriority |
This is the background thread priority that wakes up every HeartbeatInverval to send a message to the server. |
Port |
Standard TCP/IP port number. Default is arbitrarily chosen as 16000. Must be the same on the server and the clients. |
ServerThreadPriority |
Priority of the server thread. Recommended to leave it alone. Default value (tpNormal) is not going to get you into too much trouble. |
WatchdogInterval |
This is the number of milliseconds between checking for heartbeat messages received on the server from clients. Checks all connections and if 2 heartbeats have gone missing for a client then that connection is declared dead and tidied up. |
WatchdogThreadPriority |
Priority of the server watchdog thread. Recommended to leave it alone. Default value (tpHighest) is a good value. |
Please also see Common Transport Properties and Events for more details.