IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Envoi image depuis serveur Java vers client J2ME


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 51
    Points : 28
    Points
    28
    Par défaut Envoi image depuis serveur Java vers client J2ME
    bonjour,
    je suis entrain de développer un serveur qui a comme mission d'envoyer une image à chaque client qui se connecte.
    voila mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    try{
    Byte[] taillefichier;
    int lu;
    long taille = 0;
    soc = ss.accept();
    jta.append("["+new Date(DateFormat.LONG)+"]>Le client "+nbrclient+" : "+InetAddress.getLocalHost().getHostAddress()+" est connecté\n\n");
    OutputStream fout = new FileOutputStream("D:\\baby.jpeg");
    System.out.println("ok");
    in = new BufferedReader(new InputStreamReader(soc.getInputStream()));
    System.out.println("ok");
    out = new BufferedWriter(new OutputStreamWriter(fout));
    out.flush();
    System.out.println("ok");
    lu = in.read();
     
    int compteur = 0;
     
    while(lu > -1)
    {
    out.write(lu);
    lu = in.read();
     
    compteur++;
    }
    out.write(lu);
    out.flush();
    //out.close();
    //in.close();
    fout.flush();
    //fout.close();
    //in.close();
    //soc.close();
    mais malheureusement mon code ne fait que créer une image dont le nom est baby sous D:
    voila le code coté client j2me:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    sc = (SocketConnection)Connector.open("socket://localhost:5555");
                    System.out.println("ok!!");
                    InputStream in = sc.openInputStream();
                    Image im = null;
                    ok();
                    try
                    {
                      ByteArrayOutputStream bStrm = new ByteArrayOutputStream();
     
                      int ch;
                      while ((ch = in.read()) != -1)
                      bStrm.write(ch);
                      byte imageData[] = bStrm.toByteArray();
                      im = Image.createImage(imageData, 0, imageData.length);
                    }
                    finally
                   {
                     if (in != null)
                     in.close();
                    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void ok(){
            try {
                form.setTitle("connxion");
                form.append("vous êtes connecté");
                form.append(sc.getAddress());
                display.setCurrent(form);
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    Merci énormément

  2. #2
    Membre éprouvé
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Points : 1 034
    Points
    1 034
    Par défaut
    Salut,

    à mon avis, tu as mal utilisé tes OutputSteam et InputStream. Pour rappel un inputStream permet comme son nom l'indique de lire quelquchose depuis un flux (Ex : un FileInputStream permet de lire le contenu d'un fichier en utilisant la méthode read(byte[] b]) et mettre le contenu lu dans le tableau de byte b). Et un outputStream permet d'écrire quelquechose vers un flux. (Ex : un FileOutputStream permet d'écrire des données dans un fichier en utilisant la méthode write(byte[] b) qui écrite le contenu du tableau de byte b dans le fichier.

    Le même raisonnement s'applique dans les outputstream et inputstream d'une Socket. l'OutputStream d'une socket permet d'envoyer des données et l'InputStream d'une Socket permet de lire (recevoir) des données.

    Donc pour récapituler.

    Dans ton coté serveur, tu dois avoir un FileInputStream qui lit l'image et l'écrit dans le OutputStream de la socket comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    FileInputStream fin = new FileInputStream("Baby.jpeg");
    byte[] b = new byte[256]
    while (fin.read(b)!=-1) { //Tant qu'on a pas encore atteint la fin du fichier lire 256 bytes
        soc.getOutputStream().write(b); //Envoyer les 256 bytes lu au client
    }
    soc.close(); // Fermet la connexion au client
    Dans ton coté client, tu dois avoir un FileOutputStream qui écrit le contenu lu depuis l'InputStream de la socket dans un fichier comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    FileOutputStream fout = new FileOutputStream("BabyRecu.jpg");
    byte[] b = new byte[256]
    while (socketClient.getOutputStream().read(b)!=-1) { // Tant qu'il y a encore quelque chose à lire
       fout.write(b); // on l'écrit dans notre fichier BabyReçu
    }
    Bon courage.

  3. #3
    Membre éclairé
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Points : 828
    Points
    828
    Par défaut
    Explique un peut...l'envoyer comment?

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 51
    Points : 28
    Points
    28
    Par défaut
    je vous remercie pour votre réponse mais FileOutputStream et getoutputstream ne sont pas accepté cote client j2me.

  5. #5
    Membre éprouvé
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Points : 1 034
    Points
    1 034
    Par défaut
    En effet, y'as pas de Socket et de FileInputStream sur J2ME.

    Je pense que ton code coté client marche très bien. Le problème est au niveau de ton code coté serveur. Ton serveur doit effectuer les traitements suivants :
    1. Le serveur doit accepter les connexion des clients
    2. Quand un client arrive, le serveur ouvre le fichier Baby.jpeg (Ce fichier doit exister sur le serveur)
    3. Et lis les données à partir de ce fichier, et écris les données lues dans l'outputstream de la socket client.
    4. et ferme la socket quand il a écris tout le contenu du fichier Baby.jpeg


    Donc, ton code sera a peu près comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    soc = ss.accept(); //Accepter les connexion des clients.
    FileInputStream fin = new FileInputStream("d:\\baby.jpeg"); //Quand un client se connecte, ouverture du fichier baby.jpeg
    byte[] b = new byte[256]
    while (fin.read(b)!=-1) { //Tant qu'on a pas encore atteint la fin du fichier lire 256 bytes
        soc.getOutputStream().write(b); //Envoyer les 256 bytes lu au client
    }
    soc.close(); // Fermet la connexion au client
    Bon courage.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 51
    Points : 28
    Points
    28
    Par défaut
    je vous remercie pour vos explication, vous avez raison:
    voila ce que j'obtiens comme résultat (erreur):
    Baby.jpeg (Le fichier spécifié est introuvable)
    mais ce point:
    2.Quand un client arrive, le serveur ouvre le fichier Baby.jpeg (Ce fichier doit exister sur le serveur)
    je ne l'est pas pris en considération:
    je vais le "googler"

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 51
    Points : 28
    Points
    28
    Par défaut

    Bonjour,
    voila ce que j'ai pu trouver depuis les recherches faites:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    FileInputStream fin = (FileInputStream) getClass().getResourceAsStream("\\kid.jpeg");
     
    byte[] b = new byte[256];
    while (fin.read(b) != -1) {
                        soc.getOutputStream().write(b);
     
           }
                    soc.close();
    mais voila ce que j'obtiens comme résultat:
    null
    d'où viens l'erreur, c'est ce que je ne comprends pas
    j'ai besoin de votre aide les professionnels

  8. #8
    Membre éprouvé
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Points : 1 034
    Points
    1 034
    Par défaut
    FileInputStream fin = (FileInputStream) getClass().getResourceAsStream("\\kid.jpeg");

    byte[] b = new byte[256];
    while (fin.read(b) != -1) {
    soc.getOutputStream().write(b);

    }
    soc.close();
    Je pense que ce code marche à condition ke kid.jpeg existe vraiment.

    mais voila ce que j'obtiens comme résultat:
    null
    null où ? une exception NullPointerException ?

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 51
    Points : 28
    Points
    28
    Par défaut
    j'ai mis l'image kid dans le dossier src de mon prgramme.
    j'obtiens simplement le mot null dans l'output (où normalement les messages d'erreurs apparaîssent).

Discussions similaires

  1. Problème envoi image depuis iPhone vers web service SOAP
    Par grivinia dans le forum Développement iOS
    Réponses: 1
    Dernier message: 06/05/2015, 14h25
  2. Réponses: 2
    Dernier message: 26/06/2007, 19h16
  3. Charger images depuis serveur
    Par Tail dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 03/11/2006, 15h09
  4. [Mail] envoi image sur serveur par e-mail
    Par thibotus01 dans le forum Langage
    Réponses: 1
    Dernier message: 02/06/2006, 09h17
  5. [Image] Afficher une image depuis serveur distant
    Par grinder59 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 17/05/2006, 09h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo