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:
la premiere connection au serveur (pour la récupération du Vector de données) je viens de l'ajouter.
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); } }
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 :
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
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() ); }
bon j'espere avoir bien exposer le probleme !!!!
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()); } }
Merci pour votre aide![]()
Partager