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