Trabsferts fichiers via le reseau

cnec Messages postés 1 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 18 juin 2004 - 18 juin 2004 à 10:30
wargre Messages postés 649 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 9 septembre 2004 - 18 juin 2004 à 10:57
Bonjour,

J'ai un petit souci. J'ai 2 ordis en reseau, je veux transferer un fichier dtd et un fichier xml et un fichier image. Tout d abord est ce que cela est possible?? J utilise une connexion mode connectee via les sockets et transfert par TCP/IP. Au final, je n arrive a transferer qu un seul fichier. Au transfert du 2eme celui qui recoit a le message : NullPointerException.
Voici mes codes:

Ordi qui envoie

class EnvoieFichier:

package comReseau;

//pour fichiers
import fichiers.FichierXml;

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

public class EnvoieFichier
{
FichierXml fXML, fDTD;
EnvoyeurFichier envoiFic, envoiFicDTD;
EnvoyeurImage envoieIm;

final static int port = 1111;
Socket socket;

String nomFic;

public EnvoieFichier(String nomFic,String nIm, JTextArea jt)
{
try
{
//classe representant adresse IP, methode determine IP du host
InetAddress serveur = InetAddress.getByName("192.168.0.1");

//creation d un socket a partir de l'@ et IP
socket = new Socket(serveur, port);

//verification de la connexion
if (socket.isConnected())
jt.append("La connexion au serveur " + serveur + " a réussie \n");
else
jt.append("La connexion au serveur " + serveur + " n'a pas réussie \n");

/***************appel fonction creation fichiers**************/
//fXML = new FichierXml("","C:/Travail_eclipse/workspace/satellite/XML/");
//retourne un nom de fichier .xml
//fXML.CreationNomFichierXml();

//fDTD = new FichierXml("test1.dtd","C:/Travail_eclipse/workspace/satellite/XML/");
//retourne un nom de fichier .dtd
//fDTD.CreationNomFichierDTD();

//Faire de meme pour image

/*************appel pour envoie fichiers****************/
jt.append("Début envoie fichier DTD \n");
//envoiFicDTD = new EnvoyeurFichier(this, nomFic, jt);
envoiFicDTD = new EnvoyeurFichier(this, "C:/Travail_eclipse/workspace/satellite/XML/test1.dtd", jt);
jt.append("Fin envoie fichier DTD \n");

jt.append("Début envoie fichier XML \n");
envoiFic = new EnvoyeurFichier(this, nomFic, jt);
jt.append("Fin envoie fichier XML \n");

/*************appel pour envoie image****************/
/*jt.append("Fichier image va être envoyé \n");
envoieIm = new EnvoyeurImage(this, "C:/Travail_eclipse/workspace/satellite/Images/"+nIm, jt);
jt.append("Fichier image a été envoyé \n");*/
/***************************************************/

jt.append("Fermeture de la socket \n");
//System.out.println("fermeture socket");
socket.close();
jt.append("Socket fermée \n");
//System.out.println("socket fermee");

}
catch (Exception e)
{
e.printStackTrace();
try
{
socket.close();
}
catch(IOException ioe)
{
jt.append("PB \n");
//System.out.println("PB");
}
}
}

}
/************************************************/
class envoyeurFichier
//* Envoie les fichiers XML créés et la DTD correspondante */
/****************************************************************/

package comReseau;
//pour fichier
import fichiers.FichierXml;

import javax.swing.*;
import java.io.*;

public class EnvoyeurFichier
{

static BufferedReader lecteurFichier = null;
//static BufferedReader lecteurFichier2 = null;
static BufferedReader entree = null;
static PrintStream sortie = null;
//static BufferedReader entree2 = null;
//static PrintStream sortie2 = null;
static String ligne = null;
//static String ligne2 = null;

public EnvoyeurFichier(EnvoieFichier ef, String nFic, JTextArea jt)
{
try
{
jt.append("mise en buffer fichier\n");
lecteurFichier = new BufferedReader(new FileReader(nFic));

//ouvre un flot d'entrée sur la socket
jt.append("ouverture entree socket\n");
entree = new BufferedReader(new InputStreamReader(ef.socket.getInputStream()));

//ouvre un flot de sortie sur la socket. Ce constructeur est "deprecated" en java1.1. sans que cela présente d'inconvénient ici.
jt.append("ouverture flots sortie\n");
sortie = new PrintStream(ef.socket.getOutputStream());

jt.append("texte : " + ligne + "\n");
while ((ligne = lecteurFichier.readLine()) != null)
{
sortie.println(ligne);
jt.append("texte : " + ligne + "\n");
}
//envoie au serveur le mot codé "xxx" pour indiquer la fin du texte.
sortie.println("xxx");
//entree.close();
lecteurFichier.close();
//System.out.println(entree.readLine());

}
catch (IOException exc)
{
jt.append("probleme à déterminer " + exc.getMessage());
}

}
}

Est ce que ces bout de code cote ordi qui envoie sont juste. Je n ai mis ici que les code d envoi des fichiers dtd et xml.

Merci dem eclairer

1 réponse

wargre Messages postés 649 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 9 septembre 2004 7
18 juin 2004 à 10:57
disons que mis a par que le code est un peu (beaucoup) merdique, tu donnes le code de ton client alors que tu dis que c'est sur le serveur qu'il y a un pb....

c'est pas tout d'aimer faire des classes mais il faut qu'elle ai une utilité par exemple, EnvoyeurFichier n'a aucune utilité.
0
Rejoignez-nous