Enviar arquivo?

1 resposta
fabiodurgante
tenho um metodo para enviar arquivos q funciona perfeitamente é o seguinte

public void SendFile(String server, int porta, String UserName, File file){   
     try{ 
 Socket s = new Socket(server, porta); 

System.out.println("Conectado a " + server + ":" + porta); 

ObjectOutputStream objetoenviado = new ObjectOutputStream(s.getOutputStream()); 
 objetoenviado.writeUTF(UserName);  //envia string username 
   
    
 objetoenviado.writeUTF(file.getName());   
    objetoenviado.writeLong(file.length());   
 System.out.println("name: " + file.getName()); 
System.out.println("lenght: " + file.length()); 


BufferedInputStream is = new BufferedInputStream(new FileInputStream(file));  

            byte[] buff = new byte[1024];   
            int len=0;   
            while ((len = is.read(buff)) > 0) { 
                objetoenviado.write(buff, 0, len);   aqui nessa linha da erro quando coloco joption pane so para confirmar se aceita ou nao o envio


               objetoenviado.flush();   
            }
    
            
txtDialog.append(UserName +" > " +" Enviou o arquivo "+  file.getName() + "\n");
objetoenviado.writeObject(UserName +" > " +" Enviou o arquivo "+  file.getName() + "\n");

             System.out.println("Chegou aqui " ); 

s.close(); 
}catch(Exception e){ 
    JOptionPane.showMessageDialog(this, "Nao foi possivel Estabelecer Coneção no IP: " + server, 
               "ERRO", JOptionPane.ERROR_MESSAGE);
} 
   
}      

e o metodo q recebe o arquivo enviado

public void ReceiveMessage(Socket s){
try{ 
   
// aqui vai a sua comunicacao com o cliente 
ObjectInputStream objetoRecebido = new ObjectInputStream(s.getInputStream()); 

String UserName = objetoRecebido.readUTF();  
String name = objetoRecebido.readUTF();  

if(objetoRecebido.readUTF() != null){}else{
txtDialog.append(UserName +" > " +  objetoRecebido.readObject() + "\n");
}


 //    Object[] options = { "Sim", "Não" };    
// int op = JOptionPane.showOptionDialog(null,"Aceita Receber Arquivo", "Selecione Uma Opção",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE, null,options, options[0]);   
  //  if(op == JOptionPane.YES_OPTION) {
 


  //inicio receber arquivo
 long size = objetoRecebido.readLong();  
   txtDialog.append(UserName +" > " +  "recebeu o arquivo " +name +"\n");

 System.out.println("name: " +  name); 
  System.out.println("lenght: " + size);
 File file = new File(name);  
 

byte[] buff = new byte[1024];   
  BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(file));   
  

            try {   
                while (size > 0) {   
                    int len = objetoRecebido.read(buff);   
                    System.out.println("got: " + len);   
                    if (len == -1) {   
                        return ;   
                    }   
                    os.write(buff, 0, len);   
                    size -= len;  
                }   
            } finally {   
                os.close();   
            }
    //fim receber arquivo  
                                

    


}catch(Exception e){ 
//e.printStackTrace(); 
//System.exit(1); 
}

} 

funciona beleza se eu nao usar o  codigo abaixo alguem poderia ajudar, se eu usar a confirmacao abaixo da erro no envio do arquivo para todo o netbeans

int op = JOptionPane.showOptionDialog(null,"Aceita Receber Arquivo", "Selecione Uma Opção",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE, null,options, options[0]);   
  //  if(op == JOptionPane.YES_OPTION) {

aqui q trava tudo usando o Joption pane
     byte[] buff = new byte[1024];   
            int len=0;   
            while ((len = is.read(buff)) > 0) { 
                objetoenviado.write(buff, 0, len);  // aqui nessa linha da erro quando coloco joption pane so para confirmar se aceita ou nao o envio


               objetoenviado.flush();   
            }

1 Resposta

Luiz_Augusto_Prado

nao deu nenhuma mensagem de erro?
outra coisa que nao entendi e pq vc quer abrir um joptionpane dentro destes whiles.
pq nao coloca fora do while? antes

Criado 18 de janeiro de 2009
Ultima resposta 19 de jan. de 2009
Respostas 1
Participantes 2