To com uma dúvida faz tempo!
Desenvolvi um servidor X cliente muito legal e pan, só que eu fico indignado com a maneira que a comunicação da rede é feita.
Se eu tenho uma classe que foi montada no cliente, e ela tem dezenas de campos para serem passados ao servidor, eu vou ter que passar de alguma maneira, seja ela string com sepações tipo “|” ou “:” ou de um em um ao inves de enviar toda a classe pro servidor e ele ler a classe que foi enviada a ele pelo cliente.
Não devo ter o conhecimento suficiente pra fazer isso, mas passar campo a campo pro servidor é chato d+.
Exemplo:
“tryCreateFicha|”+ficha.forca()+"|"+ficha.habilidade+"|"+…+"|"+ficha.inventory.getItem(0)+"|"+…ficha.inventory.getItem(99)…
e por aí vai! Dezenas de campos.
Como fazer pra passar isso de uma maneira mais fácil
Como é feita a comunicação? Tanto Cliente e Servidor são em java?
Sim, ambos em Java.
A comunicação é mais ou menos assim
O Servidor Roda a thread que fica recebendo clientes, e depois de um cliente conectado, roda uma thread para receber a mensagem dele via new Scanner(clientSocket.getInputStream()); e envia mensagens a ele via new PrintStream(clientSocket.getOutputStream())
Você pode serializar os objetos.
Pesquisei no google e achei esse link.
http://www.inf.ufrgs.br/gppd/disc/cmp167/trabalhos/sem99-1/T1/luciano/final.htm
Mas precisamente na "10 Usando Sockets para Distribuir Objetos ".
socket = server.accept();
in = new ObjectInputStream(socket.getInputStream());
Cliente = (Cliente)in.readObject();
Show! Como conseguiu achar isso? Pesquisei de tudo que é maneira que eu conhecia tipo "Passar classe servidor cliente"
e por aí vai.
Muito Obrigado! Já é um caminho novo, eu estava sem nenhum pra seguir.
Procura por Serializable.
Sua classe Cliente terá que implementar esta interface.
Já foi, funcionou como eu precisava!
Detalhe, consegui enviar uma classe para o servidor, mas na hora de preparar o cliente para receber uma classe, o cliente trava. Sem erros.
To usando o seguinte pra receber a classe
serverSocket = new Socket(Config.SERVER_IP, Config.SERVER_PORT);
ObjectInputStream objInStream = new ObjectInputStream(serverSocket.getInputStream());
dai ele trava nessa linha o.Õ
Já o servidor consegue enviar e receber classes normalmente.