Socket java client serveur
Résolu
valour1234
Messages postés
67
Date d'inscription
Statut
Membre
Dernière intervention
-
valour1234 Messages postés 67 Date d'inscription Statut Membre Dernière intervention -
valour1234 Messages postés 67 Date d'inscription Statut Membre Dernière intervention -
Bonjour, tout le monde j'ai un problème
je veux savoir si il y'a un moyen de créer un dossier et dans ce dossier un sous dossier, a partir du client dans la machine ou il y'a le serveur avec java .
je vous remercie.
je veux savoir si il y'a un moyen de créer un dossier et dans ce dossier un sous dossier, a partir du client dans la machine ou il y'a le serveur avec java .
je vous remercie.
A voir également:
- Socket java client serveur
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Cybera client - Télécharger - Divers Réseau & Wi-Fi
- Changer serveur dns - Guide
- Eclipse java - Télécharger - Langages
34 réponses
bon KX merci pour tout je pert espoir jai pas pu faire ce que je voulais le faite denvoyer un fichier avec jfilechooser et créer un dossier dune donnée de ma table sql
je voulais me basé sur le code que je tai envoyé parcequ'il enregistre le fichier et il créer un dossier mais il se bloque.
merci beaucoup KX.
je voulais me basé sur le code que je tai envoyé parcequ'il enregistre le fichier et il créer un dossier mais il se bloque.
merci beaucoup KX.
le serveur que vous mavez donné se déconect a chaque fois qu'il fai une action je ne sais pas pourquoi
Bonsoir KX jai réussi a créer un dossier et dans ce dossier un sous dossier le probléme c'est est ce qu'il ya un moyen d'envoyer des fichier evec jfilechooser utilisant objectoutputStream. Merci .
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
et au niveau du serveur pour récupérer le fichier et le mettre dans un dossier ya un moyen ? merci
Bien sûr, dans mon code, cela correspond au mode 1, et aux méthodes envoiFichier, je ne l'ai pas implémenté, mais si tu te bases sur les méthodes creationDossier que j'ai fait en entier ça devrait aller.
merci KX parceque dans ce code ce qui me dérange c le fileinputstream moi je veux enregistrer le fichier dans un dossier précis et ça veux pas marcher
merci
-->> FileInputStream fis = new FileInputStream("t.tmp"); ObjectInputStream ois = new ObjectInputStream(fis); int i = ois.readInt(); String today = (String) ois.readObject(); Date date = (Date) ois.readObject();
merci
mais il ya un message qui apparait il me dise comme quoi accés refusé au dossier voici mon code
Serveur
Client
merci KX
Serveur
server = new ServerSocket(1234); while ( true ) { connection = server.accept(); FileInputStream fis = new FileInputStream("c:\\dossier\\"); ObjectInputStream ois = new ObjectInputStream(fis); int i = ois.readInt(); if(i==1) { File today = (File) ois.readObject(); //Date date = (Date) ois.readObject(); } ois.close();
Client
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(); } else{via.close();} FileOutputStream fos = new FileOutputStream(direccionArchivo); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeInt(1); oos.writeObject(archivo.getName()); // oos.writeObject(new Date()); oos.close();
merci KX
Voici KX ce que tu ma demandé de faire jai suivi le méme principe que créerdossier
mais j'ai eu un message d'erreur
< java.util.regex.Pattern.SyntaxErrorException: llegal/unsuported escape sequence near index 3 c:\dossier\/gras>
voici le code
<gras>Serveur
Client
Merci beaucoup KX
mais j'ai eu un message d'erreur
< java.util.regex.Pattern.SyntaxErrorException: llegal/unsuported escape sequence near index 3 c:\dossier\/gras>
voici le code
<gras>Serveur
server = new ServerSocket(1234); while ( true ) { connection = server.accept(); ObjectInputStream input = new ObjectInputStream(connection.getInputStream()); int i = input.readInt(); String dir = input.readUTF(); String[] tab = dir.split("/c:\\dossier\\"); File parent = root; for (String child : tab) parent = new File(parent,child); input.close();
Client
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(); } else{via.close();} ObjectOutputStream output = new ObjectOutputStream(via.getOutputStream()); output.writeInt(3); output.writeUTF(archivo.getName()); output.flush();
Merci beaucoup KX
Avec le string dir ça ira, celui-ci contient un chemin relatif (exemple : "toto/tata/titi.txt"), que le split("/\\\\") va décomposer en String[] { "toto", "tata", "titi.txt" }, de sorte que la petite boucle for permette de se déplacer de la racine (File root) et construire l'objet File correspondant.
Si C:\\dossier est ta racine alors il faut modifier File root = new File("C:\\dossier\\");
Si C:\\dossier est ta racine alors il faut modifier File root = new File("C:\\dossier\\");
Bonsoir KX jai réussi a créer les dossier envoyer des fichier le probléme que j'ai c'est que il envoi un nombre de fichier apré un moment il se bloque et il me dise
java.net.SocketException:Connection reset by peer:Socket Write Error
voici le code
Client
Serveur
Merci beaucoup KX!
java.net.SocketException:Connection reset by peer:Socket Write Error
voici le code
Client
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(); }else{via.close();} int i1=1; 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()); dos.writeUTF(s); dos.writeUTF(s1); dos.writeInt(i1); byteArray = new byte[8192]; while ((in = bis.read(byteArray)) != -1) { bos.write(byteArray,0,in); } bis.close(); bos.close(); dos.close();
Serveur
try{ server = new ServerSocket(1234); while ( true ) { connection = server.accept(); receivedData = new byte[8192]; bis = new BufferedInputStream(connection.getInputStream()); DataInputStream dis = new DataInputStream(connection.getInputStream()); //recibimos el nombre del fichero file = dis.readUTF(); file1 = dis.readUTF(); file2=dis.readUTF(); int i=dis.readInt(); file = file.substring(file.indexOf('\\')+1,file.length()); if(i==1) { //aqui se escribe el archivo en la ubicacion donde este el Servidor.jar bos = new BufferedOutputStream(new FileOutputStream("C:\\ireg\\"+file1+"\\"+file2+"\\"+ file)); while ((in = bis.read(receivedData)) != -1){ bos.write(receivedData,0,in); bos.close(); }}else{System.exit(0);} dis.close(); bis.close();
Merci beaucoup KX!
C'est exaspérant de voir que tu ne réutilises pas du tout le code que j'ai pu te donner (et qui marche), parce que tu préfères reprendre ton code bogué et le modifié sur le tas en espérant qu'à un moment il y aura un miracle et que tout rentrera dans l'ordre !
Il me semble bien avoir dit (ici) qu'il ne fallait pas fermer la socket, or toi qu'est-ce que tu fais ?
De plus, avec ta manie de tout fermer j'imagine que ce genre de code va pas faire ce que tu veux pour des fichiers plus grand que la taille de ton buffer :
Il me semble bien avoir dit (ici) qu'il ne fallait pas fermer la socket, or toi qu'est-ce que tu fais ?
dis.close(); bis.close();
De plus, avec ta manie de tout fermer j'imagine que ce genre de code va pas faire ce que tu veux pour des fichiers plus grand que la taille de ton buffer :
while ((in = bis.read(receivedData)) != -1){
bos.write(receivedData,0,in);
bos.close();
}
Bonjour KX merci pour ta réponse je me suis basé sur ton serveur et j'ai fai ce serveur le voilà il marche trés bien avec un seul client mais quand un nouveau utilisateur s'ajoute les fichier n'arrive plus et il se plante voici le code merci.
Serveur
Serveur
public class Servidor implements Runnable { ServerSocket server; Socket connection; DataOutputStream output; BufferedInputStream bis; BufferedOutputStream bos; byte receivedData[]; int in; String file; String file1; String file2; public Servidor() { connection = null; try { server = new ServerSocket(1234); System.out.println("serveur"); } catch(Exception e) { System.out.println((new StringBuilder("erreur serveurn")).append(e).toString()); System.exit(1); } } public void run() { Socket client = null; do { do { if(server == null) { return; } try { client = server.accept(); System.out.println("nouveau client"); } catch(IOException e) { System.err.println((new StringBuilder("connexion impossible")).append(e.getMessage()).toString()); } } while(server == null); try { InputStream in = client.getInputStream(); DataInputStream dis = new DataInputStream(client.getInputStream()); file = dis.readUTF(); file1 = dis.readUTF(); file2=dis.readUTF(); int i=dis.readInt(); if(i==1) { File directorio = new File("c:\\dossier\\"+file1+"\\"+file2+"\\"); directorio.mkdir(); } if(file != null) { bos = new BufferedOutputStream(new FileOutputStream("C:\\dossier\\"+file1+"\\"+file2+"\\"+ file)); byte buf[] = new byte[1024]; int len; while((len = in.read(buf)) > 0) { bos.write(buf, 0, len); } // in.close(); bos.close(); } } catch(IOException e) { System.out.println((new StringBuilder("Error: ")).append(e).toString()); } } while(true); } public static void main(String a[]) { Servidor servidor = new Servidor(); (new Thread(servidor)).start(); } }
Je ne vois vraiment pas en quoi ce programme est basé sur le mien !
En tout cas, au niveau de la manière de programmer tu en es très loin, te revoilà avec un code monolithique mélangeant tout au même endroit, très difficile à lire et donc à déboguer !
Ce que tu fais c'est une classe implements Runnable, et ensuite un new Thread(serveur), mais cela ne créé qu'un seul thread ! Si tu veux que ton serveur créé un nouveau thread à chaque nouveau client, alors le nouveau thread doit intervenir après le client = server.accept(); de sorte que le thread principal revienne immédiatement sur cette instruction pour accepter les clients suivants...
En tout cas, au niveau de la manière de programmer tu en es très loin, te revoilà avec un code monolithique mélangeant tout au même endroit, très difficile à lire et donc à déboguer !
Ce que tu fais c'est une classe implements Runnable, et ensuite un new Thread(serveur), mais cela ne créé qu'un seul thread ! Si tu veux que ton serveur créé un nouveau thread à chaque nouveau client, alors le nouveau thread doit intervenir après le client = server.accept(); de sorte que le thread principal revienne immédiatement sur cette instruction pour accepter les clients suivants...
Bonsoir KX merci de m'aider j'ai fais un serveur presque comme celui que vous maviez donner le probléme c'est qu'il marche 3fois et avec un seul clientquand il ya un autre client qui arrive il plante voici le code merci beaucoups.
Serveur
merci beaucoup.
Serveur
public class bokal { private final ServerSocket srv; private final File root; String file ; String file1 ; String file2 ; InputStream in ; DataInputStream dis; public bokal(File root, int port) throws IOException { srv = new ServerSocket(port); this.root = root; } public void close() throws IOException { srv.close(); } public void service() throws IOException { Socket clt = srv.accept(); if(srv == null) { return; } in = clt.getInputStream(); dis = new DataInputStream(clt.getInputStream()); file = dis.readUTF(); file1 = dis.readUTF(); file2 = dis.readUTF(); int i=dis.readInt(); if(i==1) {creationDossier(in); } if(file != null) { BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:\\IREG\\"+file1+"\\"+file2+"\\"+ file)); byte buf[] = new byte[1024]; int len; while((len = in.read(buf)) > 0) { bos.write(buf, 0, len); } in.close(); } } public boolean envoiFichier(ObjectInputStream input, ObjectOutputStream output) throws IOException { //TODO // envoiConfirmation(output,false,"Mode non implémenté."); return false; } public boolean receptionFichier(InputStream in) throws IOException { BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:\\dossier\\"+file1+"\\"+file2+"\\"+ file)); byte buf[] = new byte[1024]; int len; while((len = in.read(buf)) > 0) { bos.write(buf, 0, len); } return false; } public boolean creationDossier(InputStream in) throws IOException { File directorio = new File("c:\\dossier\\"+file1+"\\"+file2+"\\"); directorio.mkdirs(); // envoiConfirmation(output,false,e.toString()); return false; } public static void main(String...args) throws IOException { bokal s = new bokal(new File(""),1234); for (int i=1; i<=3; i++) s.service(); // s.close(); } }
merci beaucoup.
Il marche trois fois parce que dans le main il y a une boucle for qui fait 3 fois appel à service()
Il vaudrait mieux faire une boucle while(true). Cependant, mon code ne permettait pas de gérer plusieurs services en même temps, il faisait des services courts puisque chaque opération était créée par un client "différent".
Si tu veux faire un serveur véritablement multi-thread il faudra faire un peu différemment, je pense à quelque chose comme ça (je reprends mon code, mais j'ai pas testé) :
Il vaudrait mieux faire une boucle while(true). Cependant, mon code ne permettait pas de gérer plusieurs services en même temps, il faisait des services courts puisque chaque opération était créée par un client "différent".
Si tu veux faire un serveur véritablement multi-thread il faudra faire un peu différemment, je pense à quelque chose comme ça (je reprends mon code, mais j'ai pas testé) :
public void service() throws IOException { while (true) { final Socket clt = srv.accept(); new Thread() { @Override public void run() { ObjectOutputStream output = new ObjectOutputStream(clt.getOutputStream()); ObjectInputStream input = new ObjectInputStream(clt.getInputStream()); int mode = input.readInt(); switch (mode) { case 1 : envoiFichier(input,output); break; case 2 : receptionFichier(input,output); break; case 3 : creationDossier(input,output); break; default : envoiConfirmation(output,false,"Mode non reconnu."); } input.close(); output.close(); }.start(); } }
Merci KX pour ta réponse ça me donne erreur a ce niveau
merci beaucoups.
public class bokal { private final ServerSocket srv; private final File root; String file ; String file1 ; String file2 ; InputStream in ; DataInputStream dis; public bokal(File root, int port) throws IOException { srv = new ServerSocket(port); this.root = root; } public void close() throws IOException { srv.close(); } public void service() throws IOException {while(true) { final Socket clt = srv.accept(); new Thread() { @Override public void run() { if(srv == null) { return; } in = clt.getInputStream(); dis = new DataInputStream(clt.getInputStream()); file = dis.readUTF(); file1 = dis.readUTF(); file2 = dis.readUTF(); int i=dis.readInt(); if(i==1) {creationDossier(in); } if(file != null) { BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:\\IREG\\"+file1+"\\"+file2+"\\"+ file)); byte buf[] = new byte[1024]; int len; while((len = in.read(buf)) > 0) { bos.write(buf, 0, len); } } in.close(); ----------->>> } }.start(); }
merci beaucoups.
Il te manque deux accolades à la fin pour fermer la méthode service() et la classe bokal, c'est peut-être juste une erreur de copier-coller sur le forum, mais ce serait bien de vérifier.
Plus embêtant, tu n'as aucun try/catch sur tes IOException, alors que la méthode run de Thread ne peut propager aucune exception !
Plus embêtant, tu n'as aucun try/catch sur tes IOException, alors que la méthode run de Thread ne peut propager aucune exception !
Bonjour KX jenvoi un entier pour qu'il active la suppresion mais ca marche pas voici mon code
Serveur
Merci beaucoups.
Serveur
< public void supprimer(DataInputStream dis) { File directorio = new File("C:\\Idossier\\"+file1+"\\"+file2+"\\"+ file); directorio.delete(); } public void run() { String message = ""; // déclaration de la variable qui recevra les messages du client // on indique dans la console la connection d'un nouveau client System.out.println("Un nouveau client s'est connecte, no "+_numClient); try { InputStream in =_s.getInputStream(); DataInputStream dis = new DataInputStream(_s.getInputStream()); file = dis.readUTF(); file1 = dis.readUTF(); file2 = dis.readUTF(); i=dis.readInt(); switch (i) { case 2 : supprimer(dis); break; } /code> Client <code>public void supprimer() { int in; String direccionArchivo = null; String IP = "127.0.0.1"; int i=0; try { Socket via = new Socket(IP, 1234); if(via.isConnected()) { JOptionPane.showMessageDialog(null, "Conectado al servidor: " + IP); //Enviamos el nombre del archivo DataOutputStream dos = new DataOutputStream(via.getOutputStream()); dos.writeUTF(s); dos.writeUTF(s1); dos.writeInt(2); } }catch (Exception e) {//JOptionPane.showMessageDialog(null,e,"Error",JOptionPane.ERROR_MESSAGE); } }
Merci beaucoups.
Je ne sais pas si tu as regardé la documentation de delete(), mais le dossier doit être vide pour pouvoir être effacé, ce qui pourrait expliquer pourquoi cela ne fonctionne pas.
Une autre chose marqué dans la javadoc c'est que l'on peut utiliser la méthode de la classe Files pour avoir des informations plus précises lorsque la suppression a échouée, via différentes Exceptions qu'il faudra distinguer pour savoir quoi faire dans tel ou tel cas...
Attention : la classe Files et les exceptions associées sont nouvelles de la JDK 7, tu ne pourras donc pas diminuer la version pour la compatibilité des anciennes JRE comme on a pu le faire tout à l'heure...
Une autre chose marqué dans la javadoc c'est que l'on peut utiliser la méthode de la classe Files pour avoir des informations plus précises lorsque la suppression a échouée, via différentes Exceptions qu'il faudra distinguer pour savoir quoi faire dans tel ou tel cas...
Attention : la classe Files et les exceptions associées sont nouvelles de la JDK 7, tu ne pourras donc pas diminuer la version pour la compatibilité des anciennes JRE comme on a pu le faire tout à l'heure...
public static boolean delete(File toDelete) { try { java.nio.file.Files.delete(toDelete.toPath()); return true; } catch (java.nio.file.NoSuchFileException e) { System.err.println(e); return true; } catch (java.nio.file.DirectoryNotEmptyException e) { System.err.println(e); return false; } catch (IOException e) { System.err.println(e); return false; } catch (SecurityException e) { System.err.println(e); return false; } catch (Exception e) { System.err.println(e); return false; } }
merci KX voila jai réussi à supprimer le dossier méme avec les fichier mais le probléme c'est qui n'effectue pas la condition pour appelé la fonction.
Bonjour KX la condition du swith ici sur le serveur
Serveur
quand il reçoit 2 il neffectue pas l'opération merci.
Serveur
public void supprimer(DataInputStream dis) { File directorio = new File("C:\\Idossier\\"+file1+"\\"+file2+"\\"+ file); directorio.delete(); } public void run() { String message = ""; // déclaration de la variable qui recevra les messages du client // on indique dans la console la connection d'un nouveau client System.out.println("Un nouveau client s'est connecte, no "+_numClient); try { InputStream in =_s.getInputStream(); DataInputStream dis = new DataInputStream(_s.getInputStream()); file = dis.readUTF(); file1 = dis.readUTF(); file2 = dis.readUTF(); i=dis.readInt(); switch (i) { case 2 : supprimer(dis); break; }
quand il reçoit 2 il neffectue pas l'opération merci.
Essaye comme ceci (au moins le temps de déboguer)
public void supprimer() { File directorio = new File("C:\\Idossier\\"+file1+"\\"+file2+"\\"+ file); System.out.println(directorio.getAbsolutePath()); boolean b = delete(directorio); // la méthode delete que j'ai définie ici System.out.println(b); } public void run() { String message = ""; // un StringBuffer ce serait mieux non ? // on indique dans la console la connexion d'un nouveau client System.out.println("Un nouveau client s'est connecte, no "+_numClient); try { InputStream in = _s.getInputStream(); // un nom de variable ne devrait pas commencer par _ DataInputStream dis = new DataInputStream(_s.getInputStream()); file = dis.readUTF(); file1 = dis.readUTF(); file2 = dis.readUTF(); i=dis.readInt(); System.out.println(i); switch (i) { case 2 : supprimer(); // inutile de passer dis en paramètre, il n'est pas utilisé break; }
"je trouves des codes", mais encore ?
Un des problème possible d'une mauvaise transmission c'est l'encodage, tu utilises des readUTF et writeUTF qui sont a-priori des méthodes pour manipuler du texte, alors qu'un fichier Excel est un fichier binaire, il vaudrait donc mieux utiliser les méthode read(byte[]) et write(byte[])...
Un des problème possible d'une mauvaise transmission c'est l'encodage, tu utilises des readUTF et writeUTF qui sont a-priori des méthodes pour manipuler du texte, alors qu'un fichier Excel est un fichier binaire, il vaudrait donc mieux utiliser les méthode read(byte[]) et write(byte[])...
je supose que c'est un probléme du a lenvoi du fichier et a la récéption voici le serveur et le client merci beaucoup.
Serveur
Client
merci beaucoups.
Serveur
public void run() { try { InputStream in = socket.getInputStream(); DataInputStream dis = new DataInputStream(socket.getInputStream()); String file = dis.readUTF(); String file1 = dis.readUTF(); String file2 = dis.readUTF(); int i = dis.readInt(); if(i == 1) { File directorio = new File("c:\\dossier\\"+file1+"\\"+file2+"\\"); directorio.mkdirs(); } if(file != null) { BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:\\Idossier\\"+file1+"\\"+file2+"\\"+ file)); byte buf[] = new byte[131072]; int len; while((len = in.read(buf)) > 0 ) { bos.write(buf, 0, len); } } }
Client
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()); dos.writeUTF(s); dos.writeUTF(s1); dos.writeInt(1); // dos.writeInt(2); byteArray = new byte[131072]; while ((in = bis.read(byteArray)) != -1) { bos.write(byteArray,0,in); }
merci beaucoups.
Comme ça je vois deux "détails" qui pourraient poser problème.
Dans Serveur, ta boucle while continue tant que len>0, or il est possible qu'à un moment donné on n'envoie rien (parce que le réseau est saturé par exemple) donc on a len==0, mais qu'à l'étape d'après on puisse continuer malgré tout l'envoi de données, or tu auras coupé ta boucle trop tôt et tu n'auras pas la fin du message ! Seul le cas len == -1 permet de s'assurer que la transmission est terminée.
Dans les deux codes, tu utilises 128 Kio pour ton buffer de données, je me demande si ce n'est pas un peu trop (surtout combiné à la première erreur), il faudrait que tu prennes une taille beaucoup plus modeste (1Kio suffira) pour vérifier que ce n'est pas cette taille qui pose problème...
Dans Serveur, ta boucle while continue tant que len>0, or il est possible qu'à un moment donné on n'envoie rien (parce que le réseau est saturé par exemple) donc on a len==0, mais qu'à l'étape d'après on puisse continuer malgré tout l'envoi de données, or tu auras coupé ta boucle trop tôt et tu n'auras pas la fin du message ! Seul le cas len == -1 permet de s'assurer que la transmission est terminée.
Dans les deux codes, tu utilises 128 Kio pour ton buffer de données, je me demande si ce n'est pas un peu trop (surtout combiné à la première erreur), il faudrait que tu prennes une taille beaucoup plus modeste (1Kio suffira) pour vérifier que ce n'est pas cette taille qui pose problème...
Bonsoir KX voila j'ai essayé mais rien voici mon code merci
Serveur
Client
merci beaucoups.
Serveur
public void run() { try { BufferedInputStream bis = new BufferedInputStream(_s.getInputStream()); DataInputStream dis = new DataInputStream(_s.getInputStream()); int i=dis.readInt(); file = dis.readUTF(); file1 = dis.readUTF(); file2 = dis.readUTF(); File directorio = new File("c:\\IREG\\"+file1+"\\"+file2+"\\"); directorio.mkdirs(); // File directorio = new File("c:\\ireg\\"+file1+"\\"+file2+"\\"); // directorio.delete(); switch(i){ case 1 : File directorio1 = new File("C:\\dossier\\"+file1+"\\"+file2+"\\"); SupprRep(directorio1); break; case 2 : creerdossier(file,file1,file2); break; } // File directorio = new File("c:\\dossier\\"+file1+"\\"+file2+"\\"); // directorio.delete();} if(file != null) { BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:\\dossier\\"+file1+"\\"+file2+"\\"+ file)); byte buf[] = new byte[1024]; int len; while((len = bis.read(buf))>=0) { bos.write(buf, 0, len); } bis.close(); bos.close(); } }
Client
public void Client() { String IP = null; int i=0; try { IP = JOptionPane.showInputDialog(null,"Entrez Lip du pc distant","Client",JOptionPane.CANCEL_OPTION); Socket via = new Socket(IP, 1234); if(via.isConnected()) { JOptionPane.showMessageDialog(null, "Conectado al servidor: " + IP); //Enviamos el nombre del archivo DataOutputStream dos = new DataOutputStream(via.getOutputStream()); // dos.writeUTF(archivo.getName()); dos.writeUTF(s); dos.writeUTF(s1); dos.writeInt(2); // dos.writeInt(1); } via.close();
merci beaucoups.