When one clicks on an URL 
                link in a browser page, a request is sent to the computer at the 
                domain indicated. If no port is included, the default port 80 
                is used. The Web server is watching 
                this port and when a request arrives it will open a socket 
                for this client and provide the Web page or other service requested.
              Other types of servers use other ports to provide services such 
                as database access, email, etc. Also, as mentioned earlier, 
                servers can be created with RMI, 
                thus directly calling methods in the server program itself. Here, 
                though, we will concentrate on socket type servers, such as web 
                servers.
              Web serving is a stateless interaction, meaning that it 
                breaks off the connection after answering the request and does 
                not maintain any further connection information about that client. 
                Each interaction will require a new connection. (An on line store 
                might use a cookie file on the browser platform and the IP address 
                of the requestor to maintain information about an interaction 
                for a given period of time.) 
              Note that servers for other types of protocols, such as FTP, 
                can maintain a connection as long as necessary.
              The Java Standard 
                Edition offers lots of resources to create and run your own 
                server such as a HTTP (web) server. The Enterprise Edition offers 
                many advanced tools and features but the J2SE provides sufficient 
                resources to build useful servers. 
              We will create a micro HTTP server that illustrates all 
                the basic components of a web server. Such a server could run 
                in an embedded processor and 
                provide information on, say, a sensor or display data from a scientific 
                instrument. See the references for similar server projects.
              Note that since you customize the server as you wish, you don't 
                have to break off the connection (that is, close the socket) immediately 
                as with standard Web servers. We discuss in Chapter 
                15 a client/server system using sockets that can maintain 
                a continual connection. 
              Our little web server needs to
               
              
                - Create a ServerSocket 
                  instance that watches for incoming client requests.
 
 
- Create a Socket 
                  to connect with a client.
 
 
- Spin off a thread to handle 
                  the client's request
 
 
- Use stream I/O to receive 
                  the clients' requests and to send responses. 
The following pages will discuss each of these functions.