import java.io.*;
import java.net.*;
import java.util.*;

class Calculadora
{
	public static void main(String argv[]) throws Exception
   {
  		String sentence="calculadora";
		String modifiedSentence,total;
		String close = "close";
      BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
      Socket clientSocket = new Socket("localhost", 6789);
      DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
      BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
		System.out.println("Conexion aceptada  ,Preparado y listo para calcular");
		try 
		{
			outToServer.writeBytes(sentence + '\n');
		}
		catch(IOException e)
		{
			System.out.printf("Error comunicacion con servidor");
			clientSocket.close();
			System.exit(-1);
		}
		while(true)
		{
			try 
			{
				//System.out.println("c10 ");
		      modifiedSentence = inFromServer.readLine();
				//System.out.println("c1bla ");
		      if(modifiedSentence.compareTo(close) == 0)
		      {
					System.out.println(" Conexion cerrada ");
					clientSocket.close();
					break;
				}
				StringTokenizer st = new StringTokenizer(modifiedSentence,"/*+-",true);
				//System.out.println("c1bla ");
	         total  = calcula(st);
				//System.out.println("c1t "+total +"");
				try
				{
					outToServer.writeBytes(total + '\n');
				}
				catch(IOException e) 
				{
					System.out.printf("Error comunicacion con servidor");
					clientSocket.close();
					System.exit(-1);
				}
				System.out.println("FROM SERVER:  La respuesta es :" + modifiedSentence);
		  	}
			catch(IOException e) 
			{
				System.out.printf("Error comunicacion con servidor");
				clientSocket.close();
				System.exit(-1);
			}
		}
	}
	
	static String calcula(StringTokenizer st)
   {
		try
		{
		Thread.sleep(10000); //Tarea que consume diez segundos.
		}
		catch(InterruptedException e)
		{
		}
		//creamos un entero con e
		String resultado = "0";
		int num = st.countTokens();
		int i;
		boolean noerror = true;
		boolean ok  = false;
		String X;
		String operador;
		double num1,num2;
		String resta = "-";
		String suma ="+";
		String multi = "*";
		String div = "/";
		//comprobación de numero ingresado es correcto
		//System.out.println("c1a "+num+"");
		if(num!= 3)
		{
			//i = num;
			//System.out.println("\n Error");
			resultado = "none";
	      noerror = false;
	      return resultado;
		}
		if(noerror)
		{
			//Inicio II, se hace que las diviciones se envien a una calculadora
			X= (st.nextToken());
			System.out.println("String :"+X+"");
			num1  = Double.parseDouble(X);
			operador= (st.nextToken());
			X= (st.nextToken());
			num2  = Double.parseDouble(X);
			if(operador.compareTo(div)==0)
			{
				resultado=""+(num1/num2)+"";
				return resultado;
			}
 			if(operador.compareTo(multi)==0)
			{
				resultado=""+(num1*num2)+"";
				return resultado;
			}
			if(operador.compareTo("+")==0)
			{
				resultado=""+(num1+num2)+"";
				return resultado;
	    	}
	    	if(operador.compareTo("-")==0)
			{
				resultado=""+(num1-num2)+"";
				return resultado;
	    	}
		}
		//FIN SUMA Y RESTA
		//System.out.printf("\n Resultado "+resultado+" ");
		return resultado;
	}
}
