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();
}
Enviar arquivo?
1 Resposta
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
Alura Sistemas operacionais: entenda seu conceito e suas funções Descubra o que são sistemas operacionais, suas funções e tipos. Aprenda tudo de forma clara e objetiva. Não perca tempo!
Casa do Codigo Orientacao a Objetos: Aprenda seus conceitos e suas... Por Thiago Leite e Carvalho — Casa do Codigo