Facilitar comunicação em Socket?

8 respostas
X

Olá pessoal…

Ainda sou leigo em java ( 6 meses apenas ), e estou com o seguinte problema.

Há um tempo criei um chat (cliente/servidor) em java utilizando Thread e Socket, nele tinha funções como Mensagens Privadas e mensagens offlines .Obs: Tudo sem BANCO DE DADOS

Até aí tudo bem, praticamente o que salvou tudo foi a função Split, afinal utilizava Split para definir as funções.

Agora estou desenvolvendo um novo projeto, que será um chat com todas as funções do anterior, mais o Jogo da Velha e a conexão com Banco de Dados para cadastro de usuário.

Sendo assim, acho que ficaria muito estranho e confuso vários Split no desenvolvimento do projeto.

Gostaria de saber se existe outra maneira mais simples para uma situação como essa.

Agradeço. Abraços a todos !

8 Respostas

viniciusalvess

Trabalhe com byte[] ao invés de Strings … para cadastro de usuário pode gravar os usuários em arquivo para não ficar dependente de nenhum DB server , tem a classe ByteBuffer que pode te ajudar bastante na montagem de pacote para envio…

R_chieck

Ola, eu recomendaria ainda, ao invés de usar arquivo, transformar o próprio objeto em byte serializar e enviar do outro lado o inverso, já implementei isso, fica muito bom.

viniciusalvess

Boa , porém na serialização adicionaria 4 bytes a mais no arquivo para cada objeto ,que é o tamanho do objeto.

X

Olá agradeço a atenção e achei bastante interessante a idéia, e como sou ainda bastante leigo tenho algumas dúvidas.

Antes eu quero dizer que eu vou ter um servidor conectado com o banco de dados Mysql.

Se eu utilizar o Byte poderia criar um pacote com os dados do usuário e mandar para o servidor ( por socket ) e assim no servidor efetuando o cadastro no banco de dados?

Lembrando que na verdade eu não quero utilizar muitas vezes Split, pois ficaria mto confuso;

Agradeço a atenção.

R_chieck

Certo, o método de enviar via byte é ótimo para isso, já o método de enviar string e fazer split não é aconselhável e nem está correto para este caso. Enviando via byte não usarás o split.

Vou dar um breve exemplo.

vc terá uma classe que implementa Serializable.
a classe Pessoa pr ex.

No cliente e no servidor.

o cliente irá convertela em byte e enviar pelo socket.

O servidor receberá uma série de bytes que devem ser convertidos em um Object qualquer.

para chegar a Pessoa novamente é  fazer um cast: Pessoa pessoa = (Pessoa)objeto;

onde o objeto é o recebido e convertido de byte, para criá-lo: Object objeto;

Agora é  pegar os dados da pessoa e gravar.
E

Se não quer criar seu próprio protocolo, pode usar algo como Hessian, RMI ou Google Protocol Buffers ( http://code.google.com/intl/pt-BR/apis/protocolbuffers/ ).

X

R$chieck:
Certo, o método de enviar via byte é ótimo para isso, já o método de enviar string e fazer split não é aconselhável e nem está correto para este caso. Enviando via byte não usarás o split.

Vou dar um breve exemplo.

vc terá uma classe que implementa Serializable.
a classe Pessoa pr ex.

No cliente e no servidor.

o cliente irá convertela em byte e enviar pelo socket.

O servidor receberá uma série de bytes que devem ser convertidos em um Object qualquer.

para chegar a Pessoa novamente é  fazer um cast: Pessoa pessoa = (Pessoa)objeto;

onde o objeto é o recebido e convertido de byte, para criá-lo: Object objeto;

Agora é  pegar os dados da pessoa e gravar.</blockquote>

Entendi perfeitamente a sua idéia, estava pesquisando e achei a comunicação por ObjectInputStream/ObjectOutputStream, qual você recomenda por Bytes ou por ObjectInputStream/ObjectoutputStream

Obrigado mais uma vez !

X

Olá pessoal, Acredito que por ObjectInputStream/OutputStream não ficaria legal, afinal irei receber várias (Objetos) do cliente e também iria pesar bastante na memória com o tempo.

Alguma dica de algum recurso capaz de enviar Objetos ou mensagens?

Criado 26 de julho de 2011
Ultima resposta 28 de jul. de 2011
Respostas 8
Participantes 4