Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

In web development the terms "server" and "client" are often refered to when discussing how pages are requested on the web. It is also used exstensively when talking about PC, phone, tablets, etc. The question that came to my mind was what qualified a computer to be considered a client?

I took a look at this article from wikipedia and noticed that clients are considered service requesters whereas Servers are considered service providers. If this is true couldn't all computers that request a service in a sense be considered a client?

The stereotype I noticed is that a client computer is usually synonymous with a "consumer" computer, but according to wikipedia this is not entirely accurate. Any idea on how to draw the line in this common scenario?

share|improve this question
    
Are you trying to identify certain types of hardware? –  JeffO Aug 29 '11 at 17:30
    
@Jeff O not necessarily. I just want to know if the meaning of client has a specific set of characteristics, and if so couldn't all computers that have these chararteristics be considered a client. –  loyalpenguin Aug 29 '11 at 18:27
6  
@loyal A computer is neither client nor server, but can perform the function of server or client. Some are manufactured to be better at performing one role or another though. I'm sure someone has found a way to run a web server on a phone. You call a machine a server machine if it was built with that in mind and performs that function well, much like you would call someone a runner if they enjoy and are good at running. That doesn't mean normal people can't run, nor that a runner can't do anything besides running. –  Davy8 Aug 29 '11 at 18:34
add comment

11 Answers

up vote 28 down vote accepted

Clients request data from servers. Does this help?

Also, clients and servers are processes (in this context), not computers. If you point your browser to http://localhost and serve a webpage from your machine, your computer acts as both client and server. The client is your web browser; the server is Apache, NginX (or IIS), which serves the page.

share|improve this answer
    
yes I have heard this definition which is the most common I know of. I guess theres a bit of a mix up. What exactly is the client? Is it the device that requests the service or could it also be software requesting the service? Thus my assumption that usually all "clients" are considered the devices in the hands of the consumer. –  loyalpenguin Aug 29 '11 at 18:30
6  
If you request data from a server (server1), and that server needs to request data from another server (server2), server 1 becomes a client in the second request. So not all clients are devices in the hands of consumers; it's about who's asking and who's answering. Clients ask, servers respond. –  Scott Wilson Aug 29 '11 at 18:33
    
thanks for the clarification. Well explained. –  loyalpenguin Aug 29 '11 at 18:51
    
Clients does always request data from a server. A client might only send data to a server. –  Peter Lawrey Aug 30 '11 at 6:31
2  
The granularity of what is a client and a server is not the device, not even the application: An Apache server may fetch data it serves from a remote filesystem and/or database, thus becoming a client from that remote service. –  mouviciel Aug 30 '11 at 8:37
add comment

That is true, servers are service providers. But a server has two meanings. It can mean, a computer that runs a server (software). Or a piece of software that provides content to a client.

So yes, a server (machine) can be both a content provider (server) and content consumer (client). If I'm running my website on an ubuntu box, when I request information from it, it is the server and I am the client. More specifically, if I visit a site hosted by that box, apache is the server, and my browser is the client.

A "server" can also be a client. In the case that I wanted to update the software on that box, I tell it to look at the ubuntu servers and request updated software, apt (or aptitude) is the client, and the ubuntu repositories are the server.

share|improve this answer
add comment

Let's take a grammatical approach towards this:

Bob asked for a book from John. John gave the requested book to Bob.

or

__ requested __ from __ , and __ responded.

Now, if you try to fill in the blanks, the requester (first blank) is the client. The requested thing (second blank) is called the resource, and the requestee (third and fourth blanks) is called server. Now, consider these sentences:

Your cell phone requested an image from Google, and Google responded.

Your cell phone is a client, an image is the resource, and Google is the server.

share|improve this answer
add comment

Whether a machine is a client or server is applicable to 1 single request for data. If I visit a webpage, my machine is the client and the machine hosting the site is the server. If I then use my machine to run a web service, and someone else calls it, then my machine is a server and that other machine is the client.

The distinction is valid only for the given request.

share|improve this answer
add comment

It's best to think of servers and clients in terms of processes, rather than hardware. It's extremely rare for hardware to be strictly one or the other, and thinking in those terms leads to confusion.

Consider the X windowing system - the X server is on the end user's machine (including dumb, diskless X terminals), whereas the client may be running on the central server or mainframe.

Almost any piece of hardware can act as a server or a client, or even serve both roles simultaneously.

share|improve this answer
add comment

A computer is almost never just a server. The sever/client question needs to be asked in the context of a particular service. As an example, consider loading a webpage on your home computer. In this case, you computer is acting like a client (requesting a service) and the computer serving the page is acting like a server (providing the http service). However, the computer serving the page may also be a database client (asking for a db service) if it is requesting data from a database server. And you home computer may also be acting as a fileserver, providing files to other clients on your home network.

share|improve this answer
add comment

The existing answers are excellent, but I'd like to make an analogy in non-computer terms.

Someone working as a server (waiter/waitress) in a restaurant is acting as a server. When that person gets off work they can come back to that restaurant (or a a different one) and be a client (customer).

The same way that the same person can be both server and client, so also can a computer.

A computer can primarily be a server, that is it performs the function of serving more than that of consuming, and can be called a server machine. Often times they can be built with that role in mind (higher security and resistance to failure, being a size and shape that fits easily on a server rack etc) but there's nothing intrinsic about a specific computer that makes it unfit to be a either server or client or both. (Exception being when one is lacking proper software and the ability to install such software)

share|improve this answer
add comment

A computer cannot be determined as a server or a client. If the computer hosts a server application then you can call it a server. But some of computer's applications maybe alwasys acts as a client (requesting pages).

It's not the computer. But it's the applications that distinguishes client and server.

share|improve this answer
add comment

The client is usually considered the device that is in the hands of the end user. Whether this be a computer, smart phone, kiosk, tablet, etc. This is the client.

As far as other machines requesting information between the client and server(s), I would refer to these as tier(s) of the application. This could be 2,3, or n tier architecture. I wouldn't refer to these as clients.

More information can be found here:

http://www.pcmag.com/encyclopedia_term/0,2542,t=clientserver&i=39801,00.asp

share|improve this answer
    
"The client is usually considered the device that is in the hands of the end user." -- then again there is X-Window system, which is just the reverse of this. –  tcrosley Aug 29 '11 at 19:25
add comment

A server provides a specific set of services and client(s) use that service.

The simplistic answer is that the client initialises the connection or sends the first UDP packet, the server accepts the connection. This is because the server is happy to run even if it has nothing to do, waiting for the client to tell it what to do. The client needs a server to get it to do things for it. A server often serves many clients and often does something specialised. The client usually is an aggregate of services and delegates wok to servers.

The one which is often confusing is X-Windows is the server the your desktop and the client is an application on a remote machine. This is because the server is the one which displays the application and interacts with the user on one or more applications behalf. The client application makes requests to the server to draw this or that and gets feedback or results from the server.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.