import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;

public class ServerS extends Thread{
   String Smsg;
   String msg;
   String inmsg;

   private ServerSocket serverSocket;


public ServerS(){

	super("Servidor");
	try{
	    serverSocket = new ServerSocket(6789);
	    System.out.println("Criei um Servidor...");

	}
	catch(IOException e){
	    System.err.println("Exception: couldn't create socket");
	    System.exit(1);
	}
}

 public static void main (String args[ ] ) {

	ServerS srv;
	srv = new ServerS();
	srv.start();

    }
 public void run(){

	Socket clientSocket = null;

	while (true){

	    if (serverSocket == null)
		  return;
	      try{
		     clientSocket = serverSocket.accept();

	         }
	           catch(IOException e){

		       System.err.println("Exception: couldn't connect to client socket");
		       System.exit(1);
	       }


	       // Recebe a mensagem via Socket do cliente

            PrintWriter os;

	    try{
                InputStreamReader inr = new InputStreamReader(clientSocket.getInputStream());
                BufferedReader in = new BufferedReader(inr);
                os = new PrintWriter(clientSocket.getOutputStream(),true);
		while (  (inmsg = in.readLine( )) != null )
		    {

  		//Imprime a mensagem localmente
		  System.out.println(inmsg);

		    }

		} catch (IOException e) { System.err.println(e.toString( ));}

   // }

			System.out.println("Entre com uma mensagem......");

	     try {
			 //Recebendo a mensagem via teclado a ser enviada ao Cliente


			 DataInputStream msg;
			 msg = new DataInputStream(System.in);
		     Smsg = msg.readLine();
		    }catch (IOException i) {
		           System.out.println("Erro !");
		           }

		 //Enviando a mensagem ao cliente...

		try {

			 PrintStream ps = new PrintStream(clientSocket.getOutputStream());
			 ps.println(Smsg);

		    }
		catch (IOException e)
		  {
		     System.out.println("Error: " + e);
		  }
       }

     }
  }



