How the GUI ScreenIO Client/Server Layer Works
All classical client/server applications work pretty much the same
way. Very little data is exchanged between the client and the
server, because they only transmit data that's going to be displayed on
All of the application's I/O and processing occurs on the server, and
all of the user interface processing occurs at the client.
- The server runs the GUI ScreenIO Server daemon, which
listens for incoming connections from clients.
- When a GUI ScreenIO Client sends a connection request to the
server, the server daemon verifies that the client is an authorized
user and, if so, establishes a two-way connection with the client.
If the client is licensed, the sequence is slightly
different. When the server daemon receives a connection
request, it sends its public key to the client. The client
generates a random, 128-bit key to be used for encrypting subsequent
session data, encrypts that key (as well as its authentication data)
using the server's public key, and sends it to the server.
The server deciphers the session key generated by the client,
authenticates the client's signon data, and if accepted, encrypts
all subsequent data it sends to the client, using the session
key. Likewise, the client encrypts all data it sends to the
- The server then sends the client a list of applications the client
is authorized to run. The client displays the list of
applications on a menu.
(If your client is registered, you can configure it so that it
connects and immediately launches an application instead of
displaying a menu.)
- When the user selects one of the applications, the client sends
the server a request to run that application.
- The GUI ScreenIO Server daemon launches the application and passes
it the connection used to communicate with the client.
(If the client is licensed, a new, random, session encryption key
will be negotiated with the server for each application launched by
the client. All of the communications between licensed server
and licensed client will be encrypted)
Whenever the application (running on the server) calls GUI ScreenIO
to display a panel, the GUI ScreenIO server layer detects that the
panel is to be displayed remotely, and sends the panel data over the
network to the client.
The client displays the panel and interacts with the user. The
server is free to process other clients' requests while it waits for
a response from this client.
- When an event of interest to the application occurs (for example,
the user presses a button or selects a menu item), the client sends
the panel data to the application on the server, which processes the
event and probably displays another panel...
- This back-and-forth communication continues until the user closes
the application. When that happens, the client closes the
application panel and redisplays the menu, and the application on
the server terminates.
- The server daemon then waits for the client to request another
application or to disconnect.