Sockets e arquivos

3 respostas
R

Olá pessoal!

Estou trabalhando com dois sockets…

A ideia é passar um objeto ArquivoVO para o servidor.
O VO tem dois campos: arquivo e operação, que pode ser upload ou download…

Eu estou com dificuldade em achar a classe correta para encapsular o arquivo para enviar e depois para desencapsular o arquivo…

Alguem poderia me indicar um tutorial bom ou me dizer qual classe eu posso usar para esses propósitos??

Muito grato!!

Roni Lenhardt

3 Respostas

B

Então, deixa ver se eu entendi…
Vc quer passar um objeto mesmo?!?
Ou o conteúdo de um arquivo?!? Tipo, abrir o arquivo, ler o conteúdo e enviar?!?

R

Eu quero ter um VO com os campos:

String operação; //“upload” ou “download”
“Arquivo” arquivo; //Qual tipo de objeto eu devo usar para
mandar ele em uma rede?

Meu objeto ArquivoVO implementa Serializable, o arquivo tbm vai ter que implementar?

Então eu vou ter um cliente, que manda um ArquivoVO para o servidor.
O servidor lê esse arquivo e le a variavel operacao. Se ela for igual a upload, então deve ler o arquivo da váriável e gravar em uma pasta no servidor, se for “download”, então deve voltar um ArquivoVO com o arquivo requisitado.

Deu uma esclarecida??

Obrigado!!

R

Aí vai meu método para enviar um arquivo…

if(radioDown.isSelected()){
            arqIda.setOperacao("download");
        }else{
            arqIda.setOperacao("upload");
        }
        try{
            in2 = new ObjectInputStream(s.getInputStream());
            out2 = new ObjectOutputStream(s.getOutputStream());
        
            String nomeArq = edNomeArq.getText();
            
            File file = new File("C:\temp\teste.txt");
            
            arqIda.setArquivo(file);   
            
            out2.writeObject(arqIda);
            out2.flush();
            
            arqVolta = (ArquivoVO) in2.readObject();
        }
       catch(IOException e){
            System.out.println("IO: " + e.getMessage());
        }
        catch(ClassNotFoundException e){
            System.out.println("ClassNotFound: " + e.getMessage());
        }

Esse é o evento do click do botão, mas está entrando numa especie de loop infinito e qdo eu finalizo o processo aparece no console a seguinte mensagem:

IO: Connection reset
java.lang.IllegalThreadStateException
        at java.lang.ThreadGroup.add(ThreadGroup.java:856)
        at java.lang.Thread.start(Thread.java:573)
        at org.apache.tools.ant.taskdefs.ProcessDestroyer.removeShutdownHook(ProcessDestroyer.java:145)
        at org.apache.tools.ant.taskdefs.ProcessDestroyer.remove(ProcessDestroyer.java:198)
...

Alguem pode me dizer oq eu to fazendo de errado?

Grato.

Criado 17 de agosto de 2006
Ultima resposta 18 de ago. de 2006
Respostas 3
Participantes 2