IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Reflexion programmes client/serveur Java


Sujet :

avec Java

  1. #1
    Membre régulier Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Points : 74
    Points
    74
    Par défaut Reflexion programmes client/serveur Java
    Bonsoir à toutes et tous,

    Vous allez bien?

    Voilà, j'aimerai parler d'un problème que j'ai imaginé.
    Il porte sur la programmation Java, j'aimerai créer deux programmes, un de type serveur et l'autre client. Le client serait une simple classe qui utiliserai un socket (avec un port défini) pour communiquer avec le serveur. Le serveur, lui, utiliserai la classe ServerSocket pour écouter sur ce port. (j'aimerai que la solution tourne en local simplement pour le moment)
    Décors planté
    A présent, le problème s'installe! J'ai pour habitude de travailler sur Eclipse, il faudrait créer les deux classes (Server.java et Client.java) dans un package, une classe main (Launch.java) qui créerai une instance serveur et puis une instance client.
    Mais de la façon dont je vois le serveur, il bouclerai en attendant des traitements à effectuer après réception de requête cliente. L'application n'a pas besoin d'interface graphique.

    Qu'en pensez-vous? L'orientation du projet m'a l'air correct, et pour vous? Pour le problème de la boucle du serveur, une autre solution serait-elle envisageable? Car pour afficher dans la console le statut du serveur c'est raté, vu qu'il boucle la console n'affiche rien, on dirait qu'elle bug..

    Merci d'avance pour votre participation.
    C'est à ... que vous ... le plus de mystères.

  2. #2
    Membre régulier Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Points : 74
    Points
    74
    Par défaut
    Prenons le problème de la boucle du serveur sous un autre angle, imaginons que nous devions faire un espèce de terminal de commandes, le plus simple reste d'utiliser la classe Scanner et readLine qui attend que l'utilisateur encode quelque chose et valide.
    Ici, ce serait le même style, à part que le programme est le serveur, et l'utilisateur est le client, le serveur attend une réponse sur le port. Comment reproduire ce schéma? A part la boucle bien entendu.
    C'est à ... que vous ... le plus de mystères.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    La boucle sur la réception des messages est inévitable à un moment ou à un autre. Bien sûr dans notre monde plein de frameworks, en général plus personne ne programme plus directement sur des sockets d'écoute, et la boucle est cachée loin en dessous de tout ça. Mais elle est là.

    Par contre, en général, la boucle et les opérations d'information de status, maintenance, etc, tournent dans des threads séparés. Tout cela simplifié par les frameworks.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre régulier Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Points : 74
    Points
    74
    Par défaut
    D'accord, je comprends. En multi-thread cela serait possible? Un thread correspondant à la boucle qui écoute le port, et un second assigné à l'affichage du statut du serveur.
    Ce serait faisable vu comme ça d'après toi?
    C'est à ... que vous ... le plus de mystères.

  5. #5
    Membre régulier Avatar de JTABLE
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 164
    Points : 112
    Points
    112
    Par défaut
    Citation Envoyé par arkham55 Voir le message
    D'accord, je comprends. En multi-thread cela serait possible? Un thread correspondant à la boucle qui écoute le port, et un second assigné à l'affichage du statut du serveur.
    Ce serait faisable vu comme ça d'après toi?
    l'implémentation de la classe Server doit être basé sur les thread parce que le Server reste en écoute des sockets et ne passe pas à autre chose.

  6. #6
    Membre régulier Avatar de JTABLE
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 164
    Points : 112
    Points
    112
    Par défaut
    voila un code illustrons l'utilisation des thread dans la classe 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
     
    public class Serveur {
     
    	public static void main(String[] zero){
     
    		ServerSocket socket;
    		try {
    		socket = new ServerSocket(2009);
    		Thread t = new Thread(new Accepter_clients(socket));
    		t.start();
    		System.out.println(" prêt !");
     
    		} catch (IOException e) {
     
    			e.printStackTrace();
    		}
    	}
    }
     
    class Accepter_clients implements Runnable {
     
    	   private ServerSocket socketserver;
    	   private Socket socket;
    	   private int nbrclient = 1;
    		public Accepter_clients(ServerSocket s){
    			socketserver = s;
    		}
     
    		public void run() {
     
    	        try {
    	        	while(true){
    			  socket = socketserver.accept(); // Un client se connecte on l'accepte
    	                  System.out.println("Le client numéro "+nbrclient+ " est connecté !");
    	                  nbrclient++;
    	                  socket.close();
    	        	}
     
    	        } catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
     
    	}

  7. #7
    Membre régulier Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Points : 74
    Points
    74
    Par défaut
    Merci JTable, j'avais déjà pu observer ce code sur les Threads. Mais je vais d'abord étudier de plus prêt ce système, et puis je l'implémenterai ^^
    Merci à tous.
    C'est à ... que vous ... le plus de mystères.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Aide sur un programme Client Serveur
    Par clubmed01 dans le forum Linux
    Réponses: 33
    Dernier message: 29/05/2012, 10h22
  2. Réponses: 3
    Dernier message: 29/08/2009, 00h35
  3. programme client serveur mode TCP/UDP en java
    Par ouss01 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 03/04/2009, 09h05
  4. [JBoss] Réaliser un client-serveur Java
    Par Sylario dans le forum Wildfly/JBoss
    Réponses: 8
    Dernier message: 04/04/2006, 15h28
  5. architecture d'un programme client/serveur asynchrone (win)
    Par Heimdall dans le forum Développement
    Réponses: 2
    Dernier message: 05/09/2003, 23h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo