These examples show you how to change one class, named factorySocketServer, to use secure sockets layer (SSL).
The first example shows you the factorySocketServer class not using SSL. The second example shows you the same class, renamed factorySSLSocketServer, using SSL.
Example 1: Simple factorySocketServer class without SSL support
/* File factorySocketServer.java */ // need to import javax.net to pick up the ServerSocketFactory class import javax.net.*; import java.net.*; import java.io.*; public class factorySocketServer { public static void main (String args[]) throws IOException { int serverPort = 3000; if (args.length < 1) { System.out.println("java simpleSocketServer serverPort"); System.out.println("Defaulting to port 3000 since serverPort not specified."); } else serverPort = new Integer(args[0]).intValue(); System.out.println("Establishing server socket at port " + serverPort); // Change the original simpleSocketServer to use a // ServerSocketFactory to create server sockets. ServerSocketFactory serverSocketFactory = ServerSocketFactory.getDefault(); // Now have the factory create the server socket. This is the last // change from the original program. ServerSocket serverSocket = serverSocketFactory.createServerSocket(serverPort); // a real server would handle more than just one client like this... Socket s = serverSocket.accept(); BufferedInputStream is = new BufferedInputStream(s.getInputStream()); BufferedOutputStream os = new BufferedOutputStream(s.getOutputStream()); // This server just echoes back what you send it. byte buffer[] = new byte[4096]; int bytesRead; while ((bytesRead = is.read(buffer)) > 0) { os.write(buffer, 0, bytesRead); os.flush(); } s.close(); serverSocket.close(); } }
Example 2: Simple factorySocketServer class with SSL support
/* File factorySocketServer.java */ // need to import javax.net to pick up the ServerSocketFactory class import javax.net.*; import java.net.*; import java.io.*; public class factorySocketServer { public static void main (String args[]) throws IOException { int serverPort = 3000; if (args.length < 1) { System.out.println("java simpleSocketServer serverPort"); System.out.println("Defaulting to port 3000 since serverPort not specified."); } else serverPort = new Integer(args[0]).intValue(); System.out.println("Establishing server socket at port " + serverPort); // Change the original simpleSocketServer to use a // ServerSocketFactory to create server sockets. ServerSocketFactory serverSocketFactory = ServerSocketFactory.getDefault(); // Now have the factory create the server socket. This is the last // change from the original program. ServerSocket serverSocket = serverSocketFactory.createServerSocket(serverPort); // a real server would handle more than just one client like this... Socket s = serverSocket.accept(); BufferedInputStream is = new BufferedInputStream(s.getInputStream()); BufferedOutputStream os = new BufferedOutputStream(s.getOutputStream()); // This server just echoes back what you send it. byte buffer[] = new byte[4096]; int bytesRead; while ((bytesRead = is.read(buffer)) > 0) { os.write(buffer, 0, bytesRead); os.flush(); } s.close(); serverSocket.close(); } }
For background information, see Change your Java™ code to use secure sockets layer.