It seems complicated when you read about it in corporate marketing statements, but it is actually quite simple.
A server is anything that has some resource that can be shared. There are compute servers, which provide computing power; print servers, which manage a collection of printers; disk servers, which provide networked disk space; and web servers, which
store web pages.
A client is simply any other entity that wants to gain access to a particular server. The interaction between client and server is just like the interaction between
a lamp and an electrical socket. The power grid of the house is the server, and the
lamp is a power client. The server is a permanently available resource, while the client
is free to “unplug” after it is has been served.
In Berkeley sockets, the notion of a socket allows a single computer to serve many different clients at once, as well as serving many different types of information.
This feat is managed by the introduction of a port, which is a numbered socket on a particular machine. A server process is said to “listen” to a port until a client
connects to it. A server is allowed to accept multiple clients connected to the same port
number, although each session is unique. To manage multiple client connections, a server process must be multithreaded or have some other means of multiplexing the simultaneous I/O.