//SocketServer.java

import java.util.Scanner;
import java.io.PrintWriter;
import java.io.InputStreamReader;
import java.io.DataOutputStream;
import java.net.Socket;
import java.net.ServerSocket;

public class SocketServer
{
    public static void main(String[] args)
    {
        String s;
        Scanner inputStream = null;
        PrintWriter outputStream = null;
        ServerSocket serverSocket = null;
        try
        {
            // Wait for connection on port 6789
            System.out.println("\nWaiting for a connection ...");
            serverSocket = new ServerSocket(6789);
            Socket socket = serverSocket.accept();
            // Connection made, set up streams
            inputStream =
                new Scanner
                (
                    new InputStreamReader(socket.getInputStream())
                );
            outputStream =
                new PrintWriter
                (
                    new DataOutputStream(socket.getOutputStream())
                );

            // Read a line from the client
            s = inputStream.nextLine();

            // Output text to the client
            outputStream.print("\nWell, ");
            outputStream.println(s + " is a fine programming language!");
            outputStream.flush();
            System.out.println("Closing connection from " + s);
            inputStream.close();
            outputStream.close();
        }
        catch (Exception e)
        {
            // If any exception occurs, display it
            System.out.println("Error " + e);
        }
    }
}

