Application client/server rapide
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
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
|
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");
}
} |
server
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
|
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");
}
} |
voila, ça marche, maintenant je voudrais pouvoir gerer plusieur client en meme temps, pour ce faire, j'utilise des thread
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 :
http://img852.imageshack.us/img852/2997/servert.jpg
Uploaded with ImageShack.us
socketClient.getInputStream n'est plus reconnu, une idée de pourquoi?
merci