/** * DateServer * * Network (socket) programming * socket: ip address + port (entry point) * 80 http, 8080 https, 3316 sql , 22 ssh (222 gburg) */ import java.util.Date; import java.io.IOException; import java.io.PrintWriter; import java.io.InputStreamReader; import java.io.BufferedReader; import java.net.ServerSocket; import java.net.Socket; public class DateServer { public static void main(String[] args) throws IOException { String serverName = "Sunny"; int portNo = 8888; // 1. set up a Server (socket) to monitor any requests through portNo ServerSocket serverSocket = new ServerSocket(portNo); System.out.println("Datetime server " + serverName + " is running. Waiting for clients..."); // 2. waiting for a client to connect while (true) { // 3. accept a client's connection request Socket clientSocket = serverSocket.accept(); // on Server-side // data is transmitted in bytes via stream readers // wrap it around using PrintWriter, BufferedReader // -- allow us to use basic types and Strings easily //receive : clientSocket.getInputStream() //send : clientSocket.getOutputStream() // 4. send current day/time to the client PrintWriter netOut = new PrintWriter(clientSocket.getOutputStream()); BufferedReader netIn = new BufferedReader( new InputStreamReader( clientSocket.getInputStream())); // 4.5 receive client's name // send a welcome message and prompt for client's name netOut.println("Welcome to Datetime server!"); netOut.println("Enter your name: "); netOut.flush(); String clientName = netIn.readLine(); System.out.println("Client " + clientName + " connected"); Date now = new Date(); netOut.println(serverName + ": " + now.toString()); netOut.close(); // singals end of communication // 5. close connection clientSocket.close(); } } }