What is the difference between a client and a server?
The difference between both might be tricky since they share similar things, but the main difference is how they work.
In general, and in a simplest form, a server is a machine or a program (software application) that waits for incoming requests, and a client is a machine or program sending requests to another client or a server in order to take action. A server is an entry points for multiple clients that will handle their requests.
In software programming, we talk about client and server applications but, of course, an application can do both (even if I do not recommend it).
A client application will generally be the graphical interface enabling interactions with the business domain data and show results about it. The client should normally no do any business calculations, transformation around the data. It has minimal interaction with it. The goal is to request data from the server and show them or requesting the server to create/update/delete an information. Meanwhile, the server is not only receiving the request, but also responding to it as well. Therefore, client can only execute a request after the server is enabling the request.
A server application will handle requests from a client (give me data, create this person, update the title of this person…) and give back results (task has failed, text message sent, your order has been shipped…). Sometimes, servers can also contact client application to give feedback or information (this is often called push notification like on a smartphone when you have alerts pushed from your favorite app). In order to communicate, servers can expose/respond with APIs, http requests, HTML pages(https://www.garudax.id/pulse/language-framework-jonathan-rombeau/), and much more protocols depending on the type of server.
Despite the difference they have, both server and client are considered as the component of network architecture system.