The Java Program: Connection.java

  1 // Connection.java -- thread for all communication with a client
  2 
  3 import java.net.Socket;
  4 import java.io.IOException;
  5 import java.io.InputStreamReader;
  6 import java.io.BufferedReader;
  7 import java.io.PrintWriter;
  8 
  9 class Connection extends Thread {
 10    private Socket client;
 11    private BufferedReader in;
 12    private PrintWriter out;
 13 
 14    // Initialize the streams and start the thread
 15    public Connection (Socket client_socket) {
 16       client = client_socket;
 17       System.out.println ("Server: connection from " +
 18                           client.getInetAddress());
 19       try { 
 20          in = new BufferedReader (new InputStreamReader (client.getInputStream()));
 21          out = new PrintWriter (client.getOutputStream());
 22          this.start();
 23       } catch (IOException e) {
 24          try {
 25             client.close();
 26          } catch (IOException e2) {
 27             e.printStackTrace (System.err);
 28          }
 29       }
 30    }
 31     
 32    // Read a line, reverse it, send it back.  
 33    public void run() {
 34       try {
 35          while (true) {
 36             // read in a line
 37             final String line = in.readLine();
 38             if (line == null) break;
 39             System.out.println ("Server: got line:  "+ line);
 40 
 41             // reverse it
 42             final int len = line.length();
 43             final StringBuffer revline = new StringBuffer(len);
 44             for(int i = len-1; i >= 0; i--) 
 45                revline.insert(len-1-i, line.charAt(i));
 46 
 47             // and write out the reversed line
 48             out.println(revline);
 49             out.flush();
 50          }
 51       } catch (IOException e) {
 52          e.printStackTrace (System.err);
 53       } finally {
 54          try {
 55             client.close();
 56          } catch (IOException e) {
 57             e.printStackTrace (System.err);
 58          };
 59       }
 60       System.out.println ("Server: connection closed from " +
 61                           client.getInetAddress());
 62    }
 63 }