Como identificar a operação - Socket TCP

3 respostas
ssh

Pessoal, bom dia.

Estou desenvolvendo um sistema para funcionar no estilo Client -> Server.

O meu server está assim:

public static void main(String[] args) {
		try{
			Worker w = new Worker();
			Cliente cliente = new Cliente();
			ServerSocket ss = new ServerSocket(1099);  
			Socket s = ss.accept();  
			ObjectInputStream ois = new ObjectInputStream(s.getInputStream());  
			cliente = (Cliente) ois.readObject();  
			w.criarCliente(cliente);
			
			System.out.println(cliente);  
			ss.close(); 
			
		}catch(Exception e){
			e.printStackTrace();
		}		

	}

repare que ele só está preparado para criarCliente, e se eu quisesse atualizar? ou seja, o server tem que entender qual é a operação a ser feita.

como faço isso?

3 Respostas

E

Depois de ver um cara ser demitido porque ele usou ObjectInput/OutputStream com sockets e não sabia como resolver um problema sério de vazamento de memória (dica: use ObjectOutputStream.reset de vez em quando para resolver esse problema), eu fico com um pé atrás quanto ao uso desse tipo de recurso :slight_smile:

De qualquer forma, em vez de enviar um objeto Cliente pelo socket, envie objetos Comando pelo socket, contendo dentro desse objeto os parâmetros.

Por exemplo, você poderia ter um objeto Comando que tivesse dois campos: o tipo do comando (Incluir/Excluir/Modificar) e os parâmetros (Cliente, String etc.)

gomesrod

Vivendo e aprendendo :slight_smile:
Para quem, como eu, à primeira vista não entendeu do que se tratava o problema: http://stackoverflow.com/questions/1281549/memory-leak-traps-in-the-java-standard-api

ssh

huahuahua, obrigado pela dica amigos.
Mas é apenas um trabalho de faculdade, se não utilizaria RMI. =]

obrigador. abraços

Criado 6 de junho de 2013
Ultima resposta 6 de jun. de 2013
Respostas 3
Participantes 3