01: //***** ServerSocket 02: 03: import java.net.Socket; 04: import java.net.ServerSocket; 05: import java.io.IOException; 06: import java.io.BufferedReader; 07: import java.io.InputStreamReader; 08: import java.io.PrintWriter; 09: public class ReverseServer { 10: public static void main(String[ ] args) { 11: try { 12: // Open a server socket on the designated port and 13: // allow up to max_conn connections at a time. 14: ServerSocket ssock = new ServerSocket(port, max_conn); 15: 16: // Indefinitely wait for and handle clients. 17: while (true) { 18: Socket sock = ssock.accept(); // accept() blocks 19: 20: // Read the request string from the client 21: InputStreamReader isr = 22: new InputStreamReader(sock.getInputStream()); 23: BufferedReader in = new BufferedReader(isr); 24: String req = in.readLine(); // blocks 25: 26: // Produce the response string. 27: String res = 28: new StringBuffer(req).reverse().toString(); 29: // Write the response to the client. 30: PrintWriter out = 31: new PrintWriter(sock.getOutputStream()); 32: out.println(res); 33: out.flush(); 34: // Cleanup. 35: sock.close(); // closes streams 36: } 37: } 38: catch(IOException e) { System.err.println(e); } 39: } 40: private static final int port = 9876; 41: private static final int max_conn = 100; 42: }