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

Entrée/Sortie Java Discussion :

[Socket] Message different pour 2 execution similaire


Sujet :

Entrée/Sortie Java

  1. #21
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Ecoute je te fais un pov' exemple ce soir et tu n'auras qu'a verifier les diffs
    des programmes pour voir ou est la difference ...

    Bulbo

  2. #22
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Voici un exemple qui cree un fichier toto.txt dans un thread (un fichier random de 1000 lignes)
    Dans le thread principal je me bloque durant l'ecriture et ensuite je compte les lignes du fichier (comme ca je suis sur que l'ecriture dans le fichier est bien termine)

    Il fonctionne bien et c'est exactement le code que je t'ai file precedemment ..
    si ca marche pas dans ton code n'essaie de chipoter met le code que je t'ai file tel quel et essaye de comprendre pourquoi ca marche ...

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
    import java.io.*;
    import java.util.Random;
     
    public class DummyTest
    {
     
      private String lock = new String("lock");
     
      public DummyTest() throws Exception
      {
        Thread task = new Thread()
        {
          public void run()
          {
            // on cree un fichier aleatoire mais de 1000 lignes
            PrintWriter writer = null;
            try
            {
              writer = new PrintWriter(new FileOutputStream("toto.txt"), true);
              Random rd = new Random();
              int size = 0;
              int ind2 = 0;
              for (int index = 0; index < 1000; index++)
              {
                size = rd.nextInt(81);
                for (ind2 = 0; ind2 < size; ind2++)
                {
                  writer.print((char) (rd.nextInt(26) + 'a'));
                }
                writer.print('\n');
                writer.flush();
              }
              System.out.println("Ecrit: 1000");
            }
            catch (Exception e)
            {
              e.printStackTrace();
            }
            finally
            {
              writer.close();
              debloquer();
            }
          }
        };
     
        task.start();
        bloquer();
        countLines();
      }
     
      private void countLines() throws Exception
      {
        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("toto.txt")));
        String line = null;
        int count = 0;
        while ((line = reader.readLine()) != null)
        {
          count++;
        }
        System.out.println("Lu : " + count);
      }
     
      public void bloquer()
      {
        synchronized (lock)
        {
          try
          {
            lock.wait();
          }
          catch (InterruptedException e)
          {
          }
        }
      }
     
      public void debloquer()
      {
        synchronized (lock)
        {
          lock.notifyAll();
        }
      }
     
      public static void main(String[] argv)
      {
        try
        {
          new DummyTest();
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
      }
     
    }
    Bonne chance,

    Bulbo

  3. #23
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 80
    Points : 67
    Points
    67
    Par défaut
    Avant d'essayer ton code j'ai essayé une autre petite chose

    une foi que mon thread a fini de lire sur le socket, il lance une fonction du Client qui permet d'ouvrir le fichier
    Or on arrve jamais a ce point

    sur mess bout de code qui sont au dessus, ca se situe a l'endoirt monPere.deblocage();
    ce point n'est jamais atteint, c'est pour ca qu'il reste bloqué...

    Qu'est ce qui empecherai que le run() d'un thread aille jusqu'a la fin...?

  4. #24
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 80
    Points : 67
    Points
    67
    Par défaut
    bon il ne sort pas de sa boucle while...ou alor il en sort mais il ne finit pa son run()....au choix mai la 2eme solution ne me parai pa possible

  5. #25
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 80
    Points : 67
    Points
    67
    Par défaut
    Bon et bien le probleme etai simple
    mon thread ecoute sur le socket tant que le flux ne se termine pas
    je pensai que une foi que tt les données etait transférée ca reviendrait a ce que le flux soit terminé mai en fait pas du tou... donc le thread est toujours en train de lire sur le flux d'entree et donc il ne peut pas sortir de sa boucle While
    donc du coté serveur je ferme le flux ce qui signale au thread que le flux est terminé et que je peu sortir de mon while

    cette partie march en tou cas

    Merci bien ^^

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/05/2014, 01h24
  2. Réponses: 4
    Dernier message: 20/11/2008, 09h47
  3. [JTable] tooltips differents pour chaque cellule
    Par orelero dans le forum Composants
    Réponses: 6
    Dernier message: 23/05/2006, 17h16
  4. Réponses: 5
    Dernier message: 29/08/2005, 14h51
  5. [DEV] PL/SQL Message envoyé pendant l' execution
    Par ducho dans le forum PL/SQL
    Réponses: 1
    Dernier message: 13/07/2005, 08h04

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