3 ms·
Wow. You're more verbose than I am. I'm impressed. <Puts on network-protocol-guy hat> A "server" is a program (loosely speaking) that provides a service. Typi
by mcguire 5y ago
Wow. You're more verbose than I am. I'm impressed.
<Puts on network-protocol-guy hat>
A "server" is a program (loosely speaking) that provides a service. Typically, it is more long-lived than a client, starting before the client, awaiting requests from one or more clients, and continuing after a client goes away. A canonical server is an old-style print server: it's a program that is started on the machine attached to a printer, it awaits requests from clients (those requests including that PostScript that describes what the printed page is supposed to look like), and it multiplexes access to the printer.
A "client" is a program (again, loosely speaking) that requests services from a server. It is typically shorter-lived and performs the active steps of making requests to a server.
You will note that there is nothing about "local" or "remote" machines in these definitions. There is also nothing about the number of servers a client can request services from, nor even whether a server can itself be a client of another server. (But do not ever use CORBA or any other RPC mechanism for that kind of thing. It is not worth the pain. In fact, just skip RPC stuff. Bleah.)
Now, the X server is a server; it starts up, takes over the display and input devices and waits for clients to connect. X clients connect to the server to make requests, either to display some pretty colors or whatever or to request notification of events, as the server is multiplexing input devices to multiple clients. Simple?
(Haven't we been through this before?)