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 }