Bonjour à tous,
Je dois réaliser un projet dans le cadre d'un cours d'architecture des SI mais je suis complétement largué alors j'espere que votre communauté pourra m'aider
Je vous copie l'ennoncé pour que vous puissiez comprendre mon travail :
Développez en java et en utilisant les sockets, une application client-serveur telle qu'un utilisateur, en utilisant la partie cliente, saisit la réservation d'un billet de train (dates, horaires, classe, destination, aller-retour etc.) Cette réservation est transmise à la partie serveur pour vérification de places suffisantes (on fait l'hypothèse que la destination et autres informations sont correctes et correspondent à des trains existants). S'il reste de la place dans le train, la réservation est confirmée, sinon, l'utilisateur est averti de la non satisfaction de la requête. Vous définirez le nombre de places disponibles pour chaque train.
On utilisera l'API java.net pour l'utilisation des sockets.
Que faut il regarder ?
-Le nombre de clients connectés en meme temps.
-Verrouillage/Deverouillage (type de gestion des accés concurrents)
-2 pases COMIT (validation à deux phases)
-..
Nous avons vu en cours les architectures des SI et les relations client-serveur! Mais nous n'avons fait aucun cours de java relatif aux sockets ni quoi que ce soit...
J'ai donc commencé en faisant des recherches sur la voile en cherchant un système client serveur en java et j'ai donc trouvé ceci:
Classe ClientSocketTrain
Code :
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.lang.ClassNotFoundException;
- import java.net.InetAddress;
- import java.net.Socket;
- import java.net.UnknownHostException;
- public class ClientSocketTrain {
- public static void main(String[] args) {
- try {
- //
- // Creer une connection avec le socket serveur sur l'application du serveur
- //
- InetAddress host = InetAddress.getLocalHost();
- Socket socket = new Socket(host.getHostName(), 7777);
- //
- // Envoie un message à l'application serveur (client à l'origine)
- //
- ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
- oos.writeObject("test" );
- //
- // Lit et affiche la réponse du message envoyé par l'application serveur
- //
- ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
- String message = (String) ois.readObject();
- System.out.println("Message: " + message);
- ois.close();
- oos.close();
- } catch (UnknownHostException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- }
- }
|
Classe ConnectionHandler:
Code :
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.lang.ClassNotFoundException;
- import java.net.Socket;
- class ConnectionHandler implements Runnable {
- private Socket socket;
- public ConnectionHandler(Socket socket) {
- this.socket = socket;
- Thread t = new Thread(this);
- t.start();
- }
- public void run() {
- try
- {
- //
- // Lit le message envoyé par l'application client
- //
- ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
- String message = (String) ois.readObject();
-
- System.out.println("Message Recu: " + message);
-
- //
- // Envoie une réponse à l'application cliente
- //
- ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
- oos.writeObject("Bonjour..." );
- ois.close();
- oos.close();
- socket.close();
- System.out.println("En attente d'un message du client..." );
- } catch (IOException e) {
- e.printStackTrace();
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- }
- }
|
Classe ServerSocketTrain:
Code :
- import java.io.IOException;
- import java.net.Socket;
- import java.net.ServerSocket;
- public class ServerSocketTrain {
- private ServerSocket server;
- private int port = 7777;
- public ServerSocketTrain() {
- try {
- server = new ServerSocket(port);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public static void main(String[] args) {
- ServerSocketTrain example = new ServerSocketTrain();
- example.handleConnection();
- }
- public void handleConnection() {
- System.out.println("En attente du message du client..." );
- //
- // Ici le serveur fait une boucle pour accepter toutes les connections engagées par
- // l'application cliente.
- //
- while (true) {
- try {
- Socket socket = server.accept();
- new ConnectionHandler(socket);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
|
Tout fonctionne pour le moment! En meme temps j'ai juste récupérer du code! Mais maintenant je ne sais vraiment pas par ou commencer... j'ai vraiment besoin de votre aide alors j'espere que vous allez rapidement me répondre pour que je puisse travailler dessus ! De plus notre professeur ne nous a donné que 5 jours de délai. Jusqu'à lundi prochain..
Merci d'avance
Message édité par toregua le 29-10-2009 à 15:20:06