Pessoal criei um servidor e um cliente usando socket agora gostaria de saber como faço para enviar todos os arquivos de uma determinada pasta.
exemplo o socket cliente fica varrendo a mesma pasta sempre de 10 em 10 segundos entao quando um arquivo aparecer la ele o envia para o servidor que esta esperando direto.
alguem pode me dar uma ajuda ainda sou meio fraco com sockets
Dá uma olhada nisso:
http://javafree.uol.com.br/artigo/2879/Programando-com-sockets-em-java-parte-01.html
É só fazer em uma Thread que roda a cada 10 segundos, acho que isso deve resolver o seu problema.
Oi, para fazer esta implementação, minhas idéias iniciais foram as seguintes:
- Assim que a thread identificar um ou mais arquivos, obter os nomes do mesmo e guardar em cache. Desta forma, se entrar outros arquivos durante o processamento, não haverá problemas, pois você ja definiu o conjunto de arquivos que vai trabalhar.
- Acessar cada arquivo carregando-o em um FileInputStream
- Passar o conteudo do arquivo do FileInputStream para um array de bytes… :
FileInputStream fs = new FileInputStream(’'arquivo…");
byte[] conteudo = new byte[fs.available()];
fs.read(conteudo);
- adiciona o array de bytes em uma classe wrapper própria:
public class ArquivoTransmitir implements java.io.Serializable { private String nomeArq; private byte[] arq; get()… set()… }
- Transmite o arquivo, utilizando o metodo writeObject …:
new ObjectOutputStream(socket.getOutputStream()).writeObject(arquivoTransmitir);
-
Do outro lado, voce utiliza ObjectInputStream para ler o objeto e volta-lo ao formato ArquivoTransmitir
-
Cria um FileOutputStream e grava os bytes, utilizando o nome do arquivo
Caso os arquivos sejam grandes, uma ideia é voce utilizar compressão GZIP antes de transmitir os bytes… Em uma ponta, vc usa a compressão e na outra desfaz.
Transmitirá arquivo por arquivo, para evitar sobrecarga de rede.
Mas caso sejam arquivos pequenos e queira transmitir vários ao mesmo tempo, transmite um objeto ArrayList
Espero ter ajudado.
Romilson Carvalho
Não esqueça do close() dos inputStreams