Queria ajuda pra resolver esse exercício, tenho que fazer uma calculadora usando sockets em java, onde o cliente entra com a operação e envia para o servidor que gera 2 números para realizar o calculo e envia esse 2 números para o cliente, em sequencia o cliente tem que entrar com a resposta do calculo e depois o servidor informa se a resposta do cliente esta certa ou errada.
Ate agora fiz isso, poderiam me dizer onde estou errando.
classe cliente
public class Cliente {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket cliente = new Socket("127.0.0.1", 6789);
System.out.println("O cliente se conectou ao servidor!");
ObjectInputStream result = new ObjectInputStream(cliente.getInputStream());
ObjectOutputStream dados = new ObjectOutputStream(cliente.getOutputStream());
Scanner teclado = new Scanner(System.in);
int opr = 0;
while (!((opr >= 1) && (opr <= 4))) {
System.out.println("Escolha a operação: \n1 para + ; 2 para - ; 3 para * ; 4 para /");
opr = teclado.nextInt();
}
dados.writeInt(opr);
dados.flush();
System.out.println("Qual o Resultado de: "+result.readLine()+"\n");
double resposta = teclado.nextDouble();
dados.writeDouble(resposta);
dados.flush();
System.out.println(result.readLine());
result.close();
dados.close();
cliente.close();
}
}
classe servidor
public class Servidor {
public static void main(String[] args) {
try {
ServerSocket servidor = new ServerSocket(6789);
System.out.println("Ouvindo a porta 6789");
Socket cliente = servidor.accept();
System.out.println("Cliente conectado: " + cliente.getInetAddress().getHostAddress());
ObjectOutputStream result = new ObjectOutputStream(cliente.getOutputStream());
ObjectInputStream dados = new ObjectInputStream(cliente.getInputStream());
int opr, total = 0;
opr = dados.readInt();
int num1 = (int)(Math.random() * 10 + 1);
int num2 = (int)(Math.random() * 10 + 1);
if (opr == 1) {
total = num1 + num2;
result.writeChars(num1+"+"+num2);
} else if (opr == 2) {
total = num1 - num2;
result.writeChars(num1+"-"+num2);
} else if (opr == 3) {
total = num1 * num2;
result.writeChars(num1+"*"+num2);
} else {
total = num1 / num2;
result.writeChars(num1+"/"+num2);
}
result.flush();
double resposta = dados.readDouble();
if(resposta == total){
result.writeChars("Acertou");
}else{
result.writeChars("Errou");
}
result.flush();
result.close();
dados.close();
servidor.close();
} catch (Exception e) {
System.out.println("Erro: " + e.getMessage());
} finally {
}
}
}