DateServer

import java.net.*;
import java.io.*;
import java.util.Date;

public class DateServe {

   static final int LISTENING_PORT = 32007;


   public static void main(String[] args) {
   
      ServerSocket listener;  // Listens for incoming connections.
      Socket connection;      // For communication with the
                              //             connecting program.
            
      /* Accept and process connections forever, or until
         some error occurs.  (Note that errors that occur 
         while communicating with a connected program are
         caught and handled in the sendDate() routine, so
         they will not crash the server.)
      */
            
      try {
         listener = new ServerSocket(LISTENING_PORT);
         TextIO.putln("Listening on port " + LISTENING_PORT);
         while (true) {
            connection = listener.accept();
            sendDate(connection);
         }
      }
      catch (Exception e) {
         TextIO.putln("Sorry, the server has shut down.");
         TextIO.putln("Error:  " + e);
         return;
      }
      
   }  // end main()
   

   static void sendDate(Socket client) {
        // The parameter, client, is a socket that is
        // already connected to another program.  Get
        // an output stream for the connection, send the
        // current date, and close the connection.
      try {
         System.out.println("Connection from " + 
                       client.getInetAddress().toString() );
         Date now = new Date();  // The current data and time.
         PrintWriter outgoing;   // Stream for sending data.
         outgoing = new PrintWriter( client.getOutputStream() );
         outgoing.println( now.toString() );
         outgoing.flush();  // Make sure the data is actually sent!
         client.close();
      }
      catch (Exception e){
         System.out.println("Error: " + e);
      }
   } // end sendDate()
} //end class DateServe
