plop,
cas ecole, je dois realiser un server/client, le client envoie des addition ou soustraction infixe au server et celui ci renvoi le resultat au client.
le protocole est le suivant :
client > envoie signe, envoie nombre 1, envoie nombre 2
server > calcul puis renvoi
client > reception, affichage, puis envoi de y ou n pour continuer
server > reception de y ou n et on continue ou on arrette
client
server
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 package client_server; import java.io.*; import java.net.*; import utilitaire.Clavier; public class client { /** * @param argv */ public static void main( String[] argv ){ try { InetAddress adresseServeur = InetAddress.getByName( "localhost" ); // recherche de l'adresse du serveur Socket client = new Socket( adresseServeur, 2010 ); // connection au serveur InputStream InputString = client.getInputStream(); DataInputStream DIS = new DataInputStream(InputString); OutputStream OutputString = client.getOutputStream(); DataOutputStream DOS = new DataOutputStream(OutputString); char signe; char continuation; String buffer; int nb1; int nb2; int result; do{ continuation = 'n'; System.out.println( "C>signe + ou - ? : "); buffer = Clavier.lireString(); signe = buffer.charAt(0); System.out.println( "C>premier nombre : "); nb1 = Clavier.lireInt(); System.out.println( "C>deuxiemme nombre : "); nb2 = Clavier.lireInt(); DOS.writeChar(signe); // envoi d'une trame au serveur DOS.writeInt(nb1); DOS.writeInt(nb2); result = DIS.readInt(); System.out.println( "C> reponse server : " +result ); System.out.println( "C> on continue? (y/n): "); buffer = Clavier.lireString(); continuation = buffer.charAt(0); DOS.writeChar(continuation); }while(continuation == 'y'); //Thread.sleep( 5000 ); } catch (Exception e) { e.printStackTrace(); } System.out.println("finit"); } }
voila, ça marche, maintenant je voudrais pouvoir gerer plusieur client en meme temps, pour ce faire, j'utilise des thread
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 package client_server; import java.io.*; import java.net.*; import utilitaire.Clavier; public class server { /** * @param argv */ public static void main( String[] argv ){ try { InetAddress adresseServeur = InetAddress.getByName( "localhost" ); // recherche de l'adresse du serveur Socket client = new Socket( adresseServeur, 2010 ); // connection au serveur InputStream InputString = client.getInputStream(); DataInputStream DIS = new DataInputStream(InputString); OutputStream OutputString = client.getOutputStream(); DataOutputStream DOS = new DataOutputStream(OutputString); char signe; char continuation; String buffer; int nb1; int nb2; int result; do{ continuation = 'n'; System.out.println( "C>signe + ou - ? : "); buffer = Clavier.lireString(); signe = buffer.charAt(0); System.out.println( "C>premier nombre : "); nb1 = Clavier.lireInt(); System.out.println( "C>deuxiemme nombre : "); nb2 = Clavier.lireInt(); DOS.writeChar(signe); // envoi d'une trame au serveur DOS.writeInt(nb1); DOS.writeInt(nb2); result = DIS.readInt(); System.out.println( "C> reponse server : " +result ); System.out.println( "C> on continue? (y/n): "); buffer = Clavier.lireString(); continuation = buffer.charAt(0); DOS.writeChar(continuation); }while(continuation == 'y'); //Thread.sleep( 5000 ); } catch (Exception e) { e.printStackTrace(); } System.out.println("finit"); } }
je ne touche pas au client, aucun interet, pour le server :
je met la partie code dans le run() du thread
je met la partie attente de connection dans le main du server, et a chaque connection, je creer un nouveau thread
seulement voila, regardez moi ça :
Uploaded with ImageShack.us
socketClient.getInputStream n'est plus reconnu, une idée de pourquoi?
merci
Partager