Transferencia de dados via socket

4 respostas
D

Olá amigos do GUJ,

Primeiro gostaria de agradecer a esta comunidade, comecei a mexer com java a uns 2 meses e vocês estão me ajudando pra caramba !!! Estou trabalhando sozinho, quem me passou o projeto não conhece JAVA, portanto tudo o que foi feito até agora saiu de uma cabeça que praticamente não conhecia POO.

Pessoal já olhei aqui no guj varios artigos, posts, etc. sobre sockets e I/O, só estou dizendo isto pra vcs não acharem que eu não procurei antes de postar…

Seguinte, tenho que fazer os dois lados de uma conexão cliente-servidor.

Servidor:

  • Recebe conexão do client
  • Valida usuário e senha
  • Verifica se tem arquivos para entregar para o client
  • Recebe arquivos do client e coloca no repositorio dos usuários destino

Cliente:

  • Conecta e autentica no servidor
  • Recebe arquivos caso existam
  • Envia arquivos caso existam

Como vcs podem ver na mesma conexão são trocados n arquivos (binários) e cada arquivo tem um Properties com informação do tipo ORIGEM, DESTINO, etc.
Já tentei de diversas maneiras fazer isto, não estou postando porque o post ficaria ainda maior !!! se for necessário me informem que eu coloco.

Qual a melhor maneira de “estruturar” este sistema? tipo uma unica socket pra tudo (BufferedOutputStream/BufferedInputStream - para arquivos e Properties, PrintWriter/BufferedReader - para strings), ou uma socket para bytes e outra para strings ?
ou alguma outra maneira ?

É possível enviar um arquivo binário via writeObject() e recebê-lo com readObject()? como?
OBS.: Se enviar um File não funciona.

Outra coisa alguém poderia me informar onde consigo um tutorial do Eclipse em português ? isto eu ainda não procurei, estou trabalhando com um editor de texto comum, o Edit Plus. :oops:

Grato pela Atenção

4 Respostas

V

Dá sim pra mandar objetos de um lado pro outro com o writeObjetc, só eles implementarem Serializable

Aí você pega o output stream do socket e passa como parametro do construtor do ObjectOutputStream…

talvez não seja uma boa idéia, mas você pode fazer algo do tipo:

public class Arquivo iimplements Serializable { private String fileName; private Date dataCriacao; private String origem, destino; private byte[] dados; public Arquivo(){ } // setters and getters }

não sei se fui muito claro, qlqr coisa falae

[]´s

D

Putz, nem pensei em passar um array de bytes…

como eu copiaria um File para um array de bytes, existe algum metodo ?

Valeu !!!

V

O que você pode fazer é o seguinte:

Abre um InpuStream do seu arquivo, leia bytes dele, jogue os bytes no ByteArrayOutputStream, faça isso enquanto tiver bytes para serem lidos

aí você pode fazer

ByteArrayOutputStream baos.....

byte byteArray[] = baos.toByteArray();

Referências:

http://java.sun.com/j2se/1.4.2/docs/api/java/io/ByteArrayOutputStream.html

http://java.sun.com/j2se/1.4.2/docs/api/java/io/InputStream.html

www.javaalmanac.com

[]´s

D

Valeu !!!

Qualquer coisa eu volto a perguntar !!!

[]s

Criado 25 de maio de 2004
Ultima resposta 25 de mai. de 2004
Respostas 4
Participantes 2