[PROBLEME] Envoi fichier .txt serveur -> client

cs_robx2309 Messages postés 5 Date d'inscription mardi 2 mars 2010 Statut Membre Dernière intervention 9 décembre 2011 - 9 déc. 2010 à 18:37
cs_robx2309 Messages postés 5 Date d'inscription mardi 2 mars 2010 Statut Membre Dernière intervention 9 décembre 2011 - 12 déc. 2010 à 16:27
Bonsoir tout le monde,
Voilà j'ai un problème avec mon programme :
Je veux envoyer un fichier .txt d'une machine serveur (OutputStreamWriter) à une machine client (BufferedReader). Mon application fonctionne pour l'instant en localhost, client et serveur sur ma machine.
Or dés que le serveur écrit une ligne du fichier (serveur.txt) dans son flux de sortie, NullPointerException est levée côté client, et ceci même avec un Thread.sleep(1000) côté serveur.


Voici donc mon code :
Serveur :
import java.io.*;
import java.net.*;

public class Serveur{
public static void main(String[] args){
String fichServeur="serv.txt";
File fe=new File(fichServeur);
if (!(fe.exists())){
System.err.println("Le fichier " + fichServeur+ " n'existe pas.");
System.exit(1);
}//if
ServerSocket srv;
int port=555;
        String b="";

try{
        	BufferedReader buffServeur = new BufferedReader(new FileReader(fichServeur));
        	//InputStream in = connexion.getInputStream();
srv = new ServerSocket(port);
while(true){
Socket connexion = srv.accept();
                                OutputStreamWriter out = new OutputStreamWriter(connexion.getOutputStream());
System.out.println("Connexion établie avec " + connexion.getLocalAddress());
                                Thread.sleep(1000);
                                while(b!=null){
                                	b=buffServeur.readLine();
                                	System.out.println(b);
                                    out.write(b + "\r\n");
                                    System.out.println("-->On envoie");
                                }
                connexion.close();
}//while
}//try
                catch(IOException e){System.err.println(e);}
                catch(InterruptedException e){System.err.println(e);}
}//main
}//class



[u]
Et client : /u
import java.io.*;
import java.net.*;

class test{
public static void main(String[] args){
String fichClient="client.txt";
File fe=new File(fichClient);
if (!(fe.exists())){
System.err.println("Le fichier " + fichClient+ " n'existe pas.");
System.exit(1);
}//if
Socket s;
String hote ="PC-de-Robin";
int port = 555;
String a = "";
boolean ok = true;
try{
                        BufferedWriter buffClient = new BufferedWriter(new FileWriter(fichClient));
s = new Socket(hote, port);
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
/*OutputStreamWriter out = new OutputStreamWriter(s.getOutputStream());
InputStream in = s.getInputStream();
OutputStream out = s.getOutputStream();*/
while(ok){
                            a=in.readLine();
System.out.println(a);
                            buffClient.write(a);
                            if (a.equals("fin"))
                            	ok=false;
                        }
}//try
catch(UnknownHostException e){System.out.println(e);}
catch(IOException e){System.out.println(e);}
}
}//class



Je vous remercie par avance de vos réponses :)
Bonne soirée !!

6 réponses

Utilisateur anonyme
9 déc. 2010 à 19:45
Bonsoir

Peux-tu nous donner la stack trace de ta NullPointerException s'il te plait?

readLine() peut tout à fait renvoyer null, jette un coup d'oeil à la documentation Java.
















TUER : http://tuer.sourceforge.net/tuer.jnlp

yeah! vive java
0
cs_robx2309 Messages postés 5 Date d'inscription mardi 2 mars 2010 Statut Membre Dernière intervention 9 décembre 2011
11 déc. 2010 à 12:16
Voila la Stack Trace :
java.lang.NullPointerException
at java.io.Writer.write(Writer.java:140)
at test.main(Client.java:27)

readLine peut renvoyer null, mais à mon avis c'est pas normal qu'elle renvoie null car elle est censée lire le flux d'entrée du client.
0
Utilisateur anonyme
11 déc. 2010 à 12:45
Désolé mais en fin de fichier ou s'il n'y a pas (encore) quelque chose à lire, readLine renvoie null.








TUER : http://tuer.sourceforge.net/tuer.jnlp

yeah! vive java
0
cs_robx2309 Messages postés 5 Date d'inscription mardi 2 mars 2010 Statut Membre Dernière intervention 9 décembre 2011
11 déc. 2010 à 14:12
Ah d'accord.
Mais en faite je me dis que le readLine ne marche pas parce que rien ne s'écrit dans mon fichier client.txt (qui est censé recevoir le contenu de serveur.txt)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
11 déc. 2010 à 22:40
C'est une root cause possible en effet, readLine ne lit rien car il n'a rien à lire. C'est peut-être à cause d'un port fermé sur ta machine.












TUER : http://tuer.sourceforge.net/tuer.jnlp

yeah! vive java
0
cs_robx2309 Messages postés 5 Date d'inscription mardi 2 mars 2010 Statut Membre Dernière intervention 9 décembre 2011
12 déc. 2010 à 16:27
Pourtant sur ce port je peux envoyer des données du client au serveur, le readLine() côté serveur marche bien.
C'est juste quand le serveur envoie au client que ca foire
0
Rejoignez-nous