Usando RMI, escrever classes Java que implementam o cliente e o servidor de um serviço bancário com suporte a pelo menos dois tipos de requisição (deposito/saque). Lembrando que é necessário controlar o acesso aos dados compartilhados pelos diversos clientes. Não é necessário adotar pool de threads, mas o servidor desse ser multithread.
Bem, tenho este código, gostaria de saber como seria a classe cliente, se alguém puder ajudar eu agradeceria muito.
public class Main {
/*
* Servidor
*/
public static void main(String[] args) {
Executor ex = Executors.newCachedThreadPool();
ServerSocket socketServer;
Socket so = null;
DataInputStream in = null;
DataOutputStream out = null;
Trans tra;
try{
socketServer = new ServerSocket(444);System.out.println("Socket Pronto");
so = socketServer.accept(); System.out.println("Socket Aceito");
tra = new Trans(so);
ex.execute(tra);
} catch(Exception exa){exa.printStackTrace();}
}}
------------------------------------------------------------------
public class Trans implements Runnable {
String op;
static Double saldo = 0.0;
static Object mon = new Object();
Socket so;
// 1 Crédito 2 Débito
public Trans(Socket so){
this.so = so;
}
public String ExecutaOperacao(String op){
synchronized(mon){
System.out.println("Entrei na função");
switch(op.charAt(0)){
case '1':
saldo += Double.parseDouble(op.substring(1)); //credito
return saldo.toString();
case '2':
saldo -= Double.parseDouble(op.substring(1)); //debito
return saldo.toString();
default: System.out.println("Default");
return "0";
}
}
}
public void run(){
DataInputStream in = null;
DataOutputStream out = null;
String receive;
if(so == null)return; //sem conexao
while(true){
System.out.println("Entrei no while");
try{
in = new DataInputStream (so.getInputStream());
out = new DataOutputStream(so.getOutputStream());
receive = in.readUTF();System.out.println("Li "+receive);
if(Integer.parseInt(receive) == 0){System.out.println("Fim do prorgama");break;}
out.writeUTF(ExecutaOperacao(receive));
receive = null;
} catch(Exception ex1){ex1.printStackTrace();}
}
//in.close();
//out.close();
}
}