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 :

java.io.StreamCorruptedException: invalid stream header: 73737373


Sujet :

Entrée/Sortie Java

  1. #1
    Membre régulier Avatar de King_T
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Points : 121
    Points
    121
    Par défaut java.io.StreamCorruptedException: invalid stream header: 73737373
    Bonjour,
    voila je réalise une application en Client/serveur (thread)...


    le Client se connecte une premiere fois pour envoyer au serveur son "nom" et son "IP add", et reçoi un Vector contenant tout les clients connectés.
    La deuxieme connection se fait pour chauqe discution ou verte.

    voila la méthode run() du serveur:

    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
    public void run()
    { Socket sock=null;
    try
    {
    ObjectOutputStream  out = new ObjectOutputStream(connexion.getOutputStream());
    ObjectInputStream    in = new ObjectInputStream(connexion.getInputStream());
    BufferedReader entree = new BufferedReader(new InputStreamReader(connexion.getInputStream()));
    PrintWriter sortie = new PrintWriter(connexion.getOutputStream(), true);
     
    /********* echange de données avec le serveur ***/
     
    while(in!=null) 
    { User u=new User();
     
      try {
    	  u.setName((String)in.readObject());
    	  u.setIpAdd((InetAddress) in.readObject());
    } catch (ClassNotFoundException e) {
    	// TODO Auto-generated catch block
    	e.printStackTrace();
    	System.out.println("objet_stream_err");
    }	
     
    System.out.println(u.getName());
    System.out.println(u.getIpAdd());
    v.add(u.getName()+"#"+u.getIpAdd());
    System.out.println(v.toString());
    out.writeObject(v);
     
    }
     
     
    /*************   pour les discutions  *****************/
     
     
    boolean continuer = true;
     
    while(continuer) 
    {   sock=null;
     
    String ligne = entree.readLine();
    if(ligne == null)
    {
    continuer = false;
    } else
    {System.out.println(ligne);
    //String  s=ligne;
    String [] s=ligne.split("\n");
    sock=new Socket("hawk",40111);
    PrintStream output=new PrintStream(sock.getOutputStream());
    sortie.println(s[0].toUpperCase());
    output.println(s[0].toUpperCase());
    output.flush();
    sock.close();
     
    if(ligne.equalsIgnoreCase("quit"))
    {
    continuer = false;}
    }
    }
    connexion.close();
    }
    catch(IOException e)
    {System.out.println("prob con");
    System.err.println(e);
    }
    }
    la premiere connection au serveur (pour la récupération du Vector de données) je viens de l'ajouter.
    aprés cet ajout chaque connection pour une discution induie une exception
    "java.io.StreamCorruptedException: invalid stream header: 73737373"

    voicie les methodes de la premiere connection :

    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
     
    public void connexion(){ //pour se connecter au serveur
    	try{
    		sk = new Socket("hawk",40222); //connexion au serveur via une socket
    		out = new ObjectOutputStream(sk.getOutputStream());
    		in = new ObjectInputStream(sk.getInputStream());
     
    	}catch(Exception e){
    		System.out.println("erreur connect : " + e.getMessage());
    	}
    }
     
    public void disconnect() { //pour se déconnecter du serveur
    	try {
    		sk.close();
    	} catch (Exception e) {
    		System.out.println("erreur disconnect : " + e.getMessage());
    	}
    }
     
    public void sendParam() {
    name="tarek";
      try {
    		ipAdd=InetAddress.getLocalHost ();
    	} catch (UnknownHostException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    		System.out.println("no Send;");
    	}
     
     
    try {
     
    out.writeObject(name);
    out.writeObject(ipAdd);
    } catch (IOException e) {
     
    // TODO Auto-generated catch block
    e.printStackTrace();
    		}
    	}
     
     
    public void getParam() {
         try {
    v=(Vector) in.readObject();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    	e.printStackTrace();
    	} catch (ClassNotFoundException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}
    	System.out.println(v.toString() );
     
    }
    et voila celles de la deuxieme connection :

    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
    public void sendText() { //envoi d'un message au serveur
    	       String []tabas=as.getText().split("\n");
    			versServeur.println(tabas[0]);
    			ar.append("you :"+tabas[0]+"\n");
    			as.setText("");
     
     
    	}
     
     
    public void connexion(){ //pour se connecter au serveur
    	try{
    		sk = new Socket(ipServeur,portServeur); //connexion au serveur via une socket
    		depuisServeur = new BufferedReader(new InputStreamReader(sk.getInputStream())); //on récupère le flux entrant
    		versServeur = new PrintStream(new DataOutputStream(sk.getOutputStream())); //on récupère le flux sortant
    		System.out.println("connecté*************");
    	}catch(Exception e){
    		System.out.println("erreur connect : " + e.getMessage());
    	}
    }
     
    public void disconnect() { //pour se déconnecter du serveur
    	try {
    		sk.close();
    	} catch (Exception e) {
    		System.out.println("erreur disconnect : " + e.getMessage());
    	}
    }
    bon j'espere avoir bien exposer le probleme !!!!
    Merci pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Si je suis bien, du coté serveur tu suppose que le client va envoyer ses informations via un ObjectOutputStream, mais du coté de ton deuxième client tu traite le stream comme du texte. C'est pas vraiment compatible!

  3. #3
    Membre régulier Avatar de King_T
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Points : 121
    Points
    121
    Par défaut
    donc pour une communication avec un serveur je dois utiliser un meme type de transmission de données ou bien "ObjectOutputStream" ou bien text ?

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par King_T Voir le message
    donc pour une communication avec un serveur je dois utiliser un meme type de transmission de données ou bien "ObjectOutputStream" ou bien text ?
    Si le serveur parle russe et le client parle japonais, la communication est impossible même s'ils veulent tout les deux parler de la pluie et du beau temps. C'est un peu le même principe avec ton appli

  5. #5
    Membre régulier Avatar de King_T
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Points : 121
    Points
    121
    Par défaut
    donc dans mon code je ne peux pas utiliser a la fois ObjectOutputStream et
    BufferedReader??
    meme si c'est au même temps??

  6. #6
    Membre éclairé Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Points : 676
    Points
    676
    Par défaut
    Bonjour,

    Le probleme c'est que les reader et l'objectstream ne code pas les donner tout a fait de la meme magniere donc les donner envoyer via l'object stream ne sont pas reconu par le reader.

    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. INVALID STREAM HEADER 48656C6C
    Par Faty86 dans le forum Collection et Stream
    Réponses: 0
    Dernier message: 19/07/2010, 16h38
  2. java.io.StreamCorruptedException: invalid type code: 25
    Par yli_ren dans le forum Weblogic
    Réponses: 1
    Dernier message: 13/03/2009, 11h06
  3. java.io.StreamCorruptedException: invalid stream header: 3C3F786D
    Par *alexandre* dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 20/03/2008, 16h49
  4. [subreport] Invalid Stream Header
    Par kij dans le forum iReport
    Réponses: 19
    Dernier message: 14/02/2007, 17h10
  5. [Servlet] java.io.StreamCorruptedException: invalid stream
    Par ced2004 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 07/01/2006, 14h02

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