2.8 A Primitive Web Service

Now we know enough about HTTP to set up a primitive web service that just
says "Hello, world" when someone connects to it with a browser.
Compared
to the situation in the preceding section, our program changes the role. It
tries to behave just like the server we have observed. Since we are setting
up a server here, we have to insert the port number in the ‘localport’
field of the special file name. The other two fields (hostname and
remoteport) have to contain a ‘0’ because we do not know in
advance which host will connect to our service.

In the early 1990s, all a server had to do was send an HTML document and
close the connection. Here, we adhere to the modern syntax of HTTP.
The steps are as follows:

Send a status line telling the web browser that everything
is okay.

Send a line to tell the browser how many bytes follow in the
body of the message. This was not necessary earlier because both
parties knew that the document ended when the connection closed. Nowadays
it is possible to stay connected after the transmission of one web page.
This is to avoid the network traffic necessary for repeatedly establishing
TCP connections for requesting several images. Thus, there is the need to tell
the receiving party how many bytes will be sent. The header is terminated
as usual with an empty line.

Send the "Hello, world" body
in HTML.
The useless while loop swallows the request of the browser.
We could actually omit the loop, and on most machines the program would still
work.
First, start the following program:

Now, on the same machine, start your favorite browser and let it point to
http://localhost:8080 (the browser needs to know on which port
our server is listening for requests). If this does not work, the browser
probably tries to connect to a proxy server that does not know your machine.
If so, change the browser’s configuration so that the browser does not try to
use a proxy to connect to your machine.