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

Langage Java Discussion :

[Socket] Création de bean et message de retour


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 139
    Par défaut [Socket] Création de bean et message de retour
    Bonjour,
    Je cherche a faire discuter une page php et un serveur local Java.
    J'arrive bien à envoyer un message au format XML (via la page php) pour creer un javabean depuis ce serveur. J'arrive aussi a envoyer un message a la page php qui a ouvert le socket, mais je n'arrive pas a faire fonctionner les deux methodes de lecture et d'ecriture, comme si le bean ne se construisait pas ?

    voici une partie de mon code java

    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
     
    ...
              entree=new BufferedReader(new InputStreamReader
    				    (socket.getInputStream()));
    	  sortie=new PrintStream(socket.getOutputStream());
    	  d = new XMLDecoder(new BufferedInputStream(
        		  socket.getInputStream()));
     
     
    ...
     while (true) {
        	  if (!fin) {
        	  if (n==0)
        		  System.out.println("Serveur prêt!");   // trace locale
     
     
              //la lecture  du message et la creation du bean fonctionne ssi retour n'est pas appele
        	  		setting ss;
        	  		ss=(setting) d.readObject();
        	  		d.close();
        	  		echo("Création du bean");   // trace locale
     
        	  		echo("exemple d'un attribut : " + ss.getAuth_method());
     
                            //la lecture  du message et la creation du bean fonctionne si d.readObect n'est pas appele
                            retour("toto", sortie);
        	  		fin=true;
     
     
              n++;
        	  }
        	  else {break;}
        	  }
    voici pour info un bout de mon code php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $fp = fsockopen("$host", $port, $errno, $errstr, 30);
    ...
    fputs($fp, "$message\r\n");
       $result = "";
    sleep(1);
     
    $result = fgets($fp);
     
    $result = str_replace("\r", "", $result );
    $result = str_replace("\n", "", $result ); 
    ...
    Merci pour votre aide utile

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 139
    Par défaut
    j'essaye de voir si ce n'est pas a cause des thread mais c'est pas beaucoup mieux

    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
     
     try
    	{	int n=0;
    		boolean fin = false;
        	  while (true) {
        	  if (!fin) {
        	  if (n==0)
        		  System.out.println("Serveur prêt!");   // trace locale
     
     
     
        	  		setting ss;
        	  		ss=(setting) d.readObject();
        	  		try
        	  		{
        	  		  synchronized(ss) { ss.wait(10); }
        	  		  echo("Création du bean");   // trace locale
     
        	  		}
        	  		catch(InterruptedException ex) { }
        	  		d.close();
        	  		Thread.sleep(1);
        	  		//echo(entree.readLine());
        	  		echo("exemple d'un attribut : " + ss.getAuth_method());
     
        	        retour("toto", sortie);
        	        echo("retour des valeurs");   // trace locale
     
        	  		fin=true;
     
     
              n++;
        	  }
        	  else {break;}
        	  }
     
     
    	}
        //  catch(IOException exc){}
          catch(Exception exc){System.out.println("impossible :" + exc );}
     
      ...
        }
     
      public synchronized void  retour (String string, PrintStream s) {
    	  s.println(string + "\r\n");
    }
    Ca crée bien le bean ca passe le message de retour (une attente assez longue avant que les traces s'affichent) mais il n'est pas lu par la page php, rien ne s'affiche. Sans doute que le timeout est atteint et que ca permet de terminer des processus en cours. Je ne comprend pourquoi j'arrive a faire soit l'envoie soit la lecture mais pas les deux à la suite???

    Tout se deroule comme si la creation de l'objet setting a partir du xml bloque un process ou attend la fin de quelque chose pour fonctionner. Le timeout debloque le tout mais je ne recupere aucune valeur.

    Je ne vois vraiment pas quoi faire et d'ou viens le probleme.

  3. #3
    Membre chevronné Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Par défaut
    Désolé, je ne vois pas trop. Qu'est-ce que c'est ton serveur local java ?

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 139
    Par défaut
    en fait je me suis fait un petit serveur java threade qui ecoute et renvoi des donnees. C'est la creation de mon javabean apparemment qui pose soucis, car si je lis le string et que je renvoi un autre string ca fonctionne, mais si je construit mon objet avec new XMLDecoder(new BufferedInputStream(
    socket.getInputStream)), le client qui attend une reponse ne recoit rien.

  5. #5
    Membre chevronné Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Par défaut
    Je suis un peu paumé à la lecture de ton code ; j'ai l'impression que tu te mélanges les pédales entre les entrées / sorties, ou alors c'est moi qui n'arrive pas à distinguer ce qui est serveur de ce qui est client, etc.

    Par exemple le code suivant, tout au début de ton premier message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
              entree=new BufferedReader(new InputStreamReader
    				    (socket.getInputStream()));
    	  sortie=new PrintStream(socket.getOutputStream());
    	  d = new XMLDecoder(new BufferedInputStream(
        		  socket.getInputStream()));
    ... qui conduit à penser que le socket.getInputStream() est utilisé deux fois, dans deux flux différents : un pour entree, un pour d. C'est forcément un de trop. Mais comme rien n'est très clair, il y a peut être autre chose ?....

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 139
    Par défaut
    Tu as raison mais en fait je n'en n'utilise qu'un que je met dans une variable qui sert pour tout.
    Donc je ne pense que c'est de ce cote la que vient le pb.
    je n'ai pas resolu ce pb, et je ne vois pas pourquoi cela ne fonctionne pas.
    J'arrive bien a faire des entrees et des sorties mais des que je veux construire mon bean, ca se bloque, il y a un temps d'attente, le bean se cree et puis plus rien (pas de sortie possible)

Discussions similaires

  1. Réponses: 13
    Dernier message: 24/01/2007, 18h06
  2. [socket] message de retour
    Par n8ken dans le forum Langage
    Réponses: 2
    Dernier message: 25/07/2006, 09h04
  3. Création de son propre message dans un formulaire
    Par androme dans le forum C++Builder
    Réponses: 17
    Dernier message: 06/02/2005, 23h13
  4. Réponses: 7
    Dernier message: 16/06/2004, 15h02

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