Java client serveur

[Résolu/Fermé]
Signaler
Messages postés
67
Date d'inscription
mardi 8 mai 2012
Statut
Membre
Dernière intervention
18 mai 2012
-
Messages postés
67
Date d'inscription
mardi 8 mai 2012
Statut
Membre
Dernière intervention
18 mai 2012
-
Bonjour,

jai un probléme jenvoi normalment les fichiers via le client ver la machine distante qui es le serveur

les fichiers sont stocker dans la machine distante dans un dossier que je partage.

le probléme c'est quand j'ouvre le jfilechooser dans client et par exemple je click sur annulé du jfilechooser

les fichiers ne senvoi plu et le serveur dans la machine distante se déconect.

voici mon code

//Client//


public void Cliente()
{


int in;
byte[] byteArray;
File archivo = null;
String direccionArchivo = null;
String IP = "127.0.0.1";

try
{
// IP = JOptionPane.showInputDialog(null,"Entrez Lip du pc distant","Cliente",JOptionPane.CANCEL_OPTION);
Socket via = new Socket(IP, 1234);
if(via.isConnected())
{
JOptionPane.showMessageDialog(null, "Conectado al servidor: " + IP);


JFileChooser selector = new JFileChooser();
selector.setDialogTitle("Selecciona el archivo a enviar");
int resultado = selector.showOpenDialog(null);
if (resultado == JFileChooser.APPROVE_OPTION)
{
archivo = selector.getSelectedFile();
direccionArchivo = archivo.getPath().toString();
}




BufferedInputStream bis = new BufferedInputStream(new FileInputStream(direccionArchivo));
BufferedOutputStream bos = new BufferedOutputStream(via.getOutputStream());

//Enviamos el nombre del archivo
DataOutputStream dos = new DataOutputStream(via.getOutputStream());
dos.writeUTF(archivo.getName());


byteArray = new byte[1024];
while ((in = bis.read(byteArray)) != -1)
{
bos.write(byteArray,0,in);
}
// ServerSocket.close();
bis.close();
bos.close();

JOptionPane.showMessageDialog(null, "Le Fichier " + archivo.getName().toString() +
" a bien été envoyé");
String oups=archivo.getName();
String nom=("/llego.msi/");
String gogle="//"+IP+nom+"\""+oups+"\"";

jTextField6.setText(gogle);
System.out.println(gogle);
// String gogle= "\\"+"\\"+IP+nom+oups+""\t;
}

}catch (Exception e) {JOptionPane.showMessageDialog(null,e,"Error",JOptionPane.ERROR_MESSAGE);}

}


//Serveur//


package serveur;
import java.net.*;
import java.io.*;
import javax.swing.*;

class Servidor
{

public String user = System.getProperty("user.name");
public static String nom = System.getProperty("user.home");
public static void main (String[] args)
{
ServerSocket server;
Socket connection = null;

DataOutputStream output;
BufferedInputStream bis;
BufferedOutputStream bos;

byte[] receivedData;
int in;
String file;

try{
server = new ServerSocket(1234);
while ( true ) {
connection = server.accept();
//server.close();


receivedData = new byte[1024];
bis = new BufferedInputStream(connection.getInputStream());
DataInputStream dis = new DataInputStream(connection.getInputStream());
//recibimos el nombre del fichero

file = dis.readUTF();
file = file.substring(file.indexOf('\\')+1,file.length());

//System.out.println(file);
//aqui se escribe el archivo en la ubicacion donde este el Servidor.jar
bos = new BufferedOutputStream(new FileOutputStream("C:\\dossier\"+ file));


while ((in = bis.read(receivedData)) != -1){

bos.write(receivedData,0,in);
}
// server.close();
bos.close();

dis.close();

JOptionPane.showMessageDialog(null, "Fichier (" + file.toString() + ") Reçu");
// System.exit(0);
}
// dis.close();}

}catch (Exception e ) {
// JOptionPane.showMessageDialog(null,e, "Errror",JOptionPane.ERROR_MESSAGE);
}
}
}

2 réponses

Messages postés
16372
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
23 juillet 2021
2 860
Les réponses sur javafr.com ne t'ont pas plus ? Tu aurais au moins pu faire l'effort de suivre leur conseil quant à l'utilisation des balises de code !

Pour ton programme d'envoi de fichiers, je trouve ça très compliqué, mais tu pourras regarder ici pour le simplifier.

Ensuite, je ne connais pas l'espagnol (si ça en est) donc difficile de suivre les commentaires, mais de toute évidence il te manque un else à cette condition :

if (resultado == JFileChooser.APPROVE_OPTION)

Du coup, File archivo va rester à null, et archivo.getName() devrait planter.
Alors je n'ai pas testé, mais j'imagine que cette ligne là affiche un NullPointerException...

JOptionPane.showMessageDialog(null,e,"Error",JOptionPane.ERROR_MESSAGE);

Bref, tu sais ce qu'il te reste à faire, rajoute un else à ton if, pour ne pas que le programme continue si tu as fait annuler...
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
67
Date d'inscription
mardi 8 mai 2012
Statut
Membre
Dernière intervention
18 mai 2012

je te remercie infiniment KX ça marche impec !!