Bom dia,
Estou tentando fazer a transferencia de um diretório pela rede e estou usando Sockets em estrutura Cliente/Servidor. Porém só consigo enviar mensagens de texto entre eles (ainda).
Como eu posso fazer para tranferir o conteúdo de um diretório?
Você está tentando replicar a funcionalidade do FTP, é isso?
Puxa vida…
Em vez disso, ponha um serviço ssh no servidor e use o scp no cliente, é muito mais seguro e eficiente.
Bom, você sabe que existe o suporte a arquivos zip no Java. Você pode construir um arquivo zip sem compressão e mandá-lo. A estrutura de diretórios está no arquivo, então fica fácil abrir o diretório.
J
jprogrammer
Use o ByteArrayOutputStream
christianovale
Como eu faço para implementar esses serviços de ssh e scp?
Vc tem um exemplo que possa me passar?
Tenho um pouco de urgencia pra resolver isso.
Obrigado.
T
thingol
Então…
ssh e scp não são Java, mas C.
Isso já está pronto e compilado para vários sistemas operacionais, mas você precisa instalar o servidor de ssh (sshd) no servidor, se é que já não está instalado, e o client deve ter o scp.
Se o servidor for uma versão atualizada do Linux ou do Solaris, provavelmente o sshd já está até funcionando, portanto é só questão de ver o client. Existe um pscp.exe disponível por aí (PuTTY SCP) se quiser usar o Windows como client. Você poderia usar algo como
pscp -r -l jose -pw aparecido -C *.java jose@suamaquina:/home/jose/arquivos
para copiar recursivamente os arquivos *.java para a máquina “suamaquina” usando o usuário jose, senha aparecido.
christianovale
Entendi. Mas parece que desta forma vai complicar muito uma coisa simples que quero fazer.
Deixa eu explicar:
Onde trabalho o sistema que desenvolvi funciona Distribuído; Quase toda semana sai alguma modificação ou inclusão de novos serviços no mesmo;
O que quero é que toda vez que um usuário for acessar o sistema, (antes de ser carregado) um outro programa faz a atualização deste a partir da minha maquina (isso pra não precisar atualiza-lo maquina por maquina da rede, que são muitas).
o que ja fiz até agora:
consegui usando ObjectOutputStream e ObjectInputStream fazer com que ele faça a transferência, porém, só transfere um arquivo somente.
Gostaria então de conseguir uma maneira de transferir todo o conteúdo da pasta de atualização ou, então, gerar um arquivo ZIP e transferi-lo, mas, não sei como compactar e descompactar arquivos em Java. Se vc tiver pode me enviar essas rotinas (compactar e descompactar)?
Obrigado!
T
thingol
Hum, não tenho assim de bate-pronto, mas
pegue os exemplos aqui:
Já que você não sabe, que tal aprender?
Dica… olhe o pacote java.util.zip
christianovale
Blz
Estou tentando implementar um método para descompactar um pacote ZIP, mas, o codigo que estou usando busca apenas uma entrada, ou seja, ele so descompacta um arquivo.
Como posso fazer para descompactar todo o pacote?
Segue o codigo que estou usando:
try{StringinFilename="arquivo.zip";ZipInputStreamin=newZipInputStream(newFileInputStream(inFilename));// Pega a primeira entrada ZipEntryentry=in.getNextEntry();StringoutFilename="teste.txt";//Observação OutputStreamout=newFileOutputStream(outFilename);byte[]buf=newbyte[1024];intlen;while((len=in.read(buf))>0){out.write(buf,0,len);}out.close();in.close();}catch(IOExceptione){}
Observação: este nome do arquivo muda de acordo com uma lista dos nomes dos arquivos compactados armazenados em um Vector, ou seja, atravez do codigo abaixo eu listo em um Vector os nomes dos componetes do arquivo ZIP e vopu passando eles como parametro para o codigo acima.
Se alguem puder me dizer onde estou errando, ficarei muito grato.