I'm doing a college job and got some information from the Internet, the teacher asked a client to send 2 values and a basic operation, the server should take this and return the total. It turns out that the client only takes the variables of himself, does not take the total that comes from the server and nor the opr
that is the symbol of the operation.
public class Servidor2 {
public static void main(String[] args) throws IOException {
int num1, num2, total = 0;
int operacao = 0;
char opr = 0;
//Cria um socket na porta 12342
ServerSocket servidor = new ServerSocket(12342);
System.out.println("Porta 12342 aberta!");
// Aguarda alguém se conectar. A execução do servidor
// fica bloqueada na chamada do método accept da classe
// ServerSocket. Quando alguém se conectar ao servidor, o
// método desbloqueia e retorna com um objeto da classe
// Socket, que é uma porta da comunicação.
System.out.print("Aguardando conexão do cliente...");
Socket cliente = servidor.accept();
System.out.println("Nova conexao com o cliente " + cliente.getInetAddress().getHostAddress());
ObjectOutputStream resultado = new ObjectOutputStream(cliente.getOutputStream());
ObjectInputStream dados = new ObjectInputStream(cliente.getInputStream());
num1 = dados.readInt();
num2 = dados.readInt();
operacao = dados.readInt();
if (operacao == 1) {
opr = '+';
total = (num1 + num2);
}
if (operacao == 2) {
opr = '-';
total = (num1 - num2);
}
if (operacao == 3) {
opr = 'x';
total = (num1 * num2);
}
if (operacao == 4) {
opr = '/';
total = (num1 / num2);
} else {
System.out.printf("Você digitou uma operação inválida.");
}
resultado.writeInt(total);
resultado.writeChar(opr);
resultado.flush();
resultado.flush();
servidor.close();
}
}
public class Cliente2 {
public static void main(String[] args) throws UnknownHostException, IOException {
int num1 = 0;
int num2 = 0;
int operacao = 0;
char opr;
Socket cliente = new Socket("127.0.0.1", 12342);
System.out.println("O cliente conectou ao servidor");
ObjectInputStream resultado = new ObjectInputStream(cliente.getInputStream());
ObjectOutputStream dados = new ObjectOutputStream(cliente.getOutputStream());
num1 = Integer.parseInt(JOptionPane.showInputDialog("Digite o primeiro número"));
num2 = Integer.parseInt(JOptionPane.showInputDialog("Digite o segundo número"));
operacao = Integer.parseInt(JOptionPane.showInputDialog("Qual operação desejada? 1= +, 2= -,3= X,4= / "));
dados.writeInt(operacao);
dados.writeDouble(num1);
dados.writeDouble(num2);
dados.flush();
int total = resultado.readInt();
opr = resultado.readChar();
System.out.println("Total de " + num1 + opr + num2 + " = " + total);
cliente.close();
}
}