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:
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:
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:
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 :)