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

Entrée/Sortie Java Discussion :

[Socket] problème de gestion de message


Sujet :

Entrée/Sortie Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 20
    Par défaut [Socket] problème de gestion de message
    bonjour, voilà j'ai un petit problème avec mes commandes dans un chat. voilà j'ai un serveur qui peut recevoir autant de clients qu'il le veut. ces clients peuvent rejoindre des salons, ils peuvent envoyer des messages publics(seulement si ils sont liés à des salons), ou des messages privés. un salon a un nom, un thème et une liste de client. un client peut avoir des salons si il en a rejoint un et créé un. mon problème est que : quand mon serveur renvoie les messages aux personnes concernées, le client doit taper une commande pour voir le message. et c'est logique car j'ai mis un send puis un receive. mais je ne pouvais pas faire autrement. j'avais fait un thread d’écoute mais au final, j'ai arrêté. ça marchait pour les message privés mais pas pour le public. je rappelle les message privés on peut les envoyer même si on est pas lié à un salon tandis que les messages publics sont envoyés à tous ceux qui sont dans le salon du client émetteur

    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    while(!fini){
    				String commande = null;
    				menu();
    				commande = sc.nextLine();
    				
    				monClient.monPote.envoyerCommande(commande);
    				commande = monClient.monPote.messageServeur();
    				
    				if(commande.equals("connecte")){
    					boolean con = false;
    					while(!con){
    						System.out.println("Entrez login");
    						log = sc.nextLine();
    						monClient.monPote.meConnecter(log);						
    						if((monClient.monPote.messageServeur()).equals("connecteOK")){
    							con=true;
    							monClient.setLogin(log);
    							monClient.setLogger(true);
    							}
    						else System.out.println("mauvais log");
    					}
    				}
    				else if(commande.equals("creerSalon")){
    					System.out.println("Entrez le theme");
    					String theme = sc.nextLine();
    					System.out.println("Entrez le nom du salon");
    					String nom = sc.nextLine();
    					monClient.monPote.creerSalon(theme,nom);
    					
    					if((monClient.monPote.messageServeur()).equals("salonOK")){
    						Salon monSalon = new Salon(theme, nom);
    						monSalon.ajouterUnClient(monClient);
    						monClient.salons.add(monSalon);
    						System.out.println("salon creer");
    					}
    					else System.out.println("pb de creation de salons");
    					
    				}
    				else if(commande.equals("joindreSalon")){
    					/*int nbSalon = monClient.monPote.messageServeurInt();
    					System.out.println("nb salon = " + nbSalon);
    					for(int i = 0;i<nbSalon;i++)System.out.println(monClient.monPote.messageServeur());*/
    					System.out.println("Entrez le nom du salon que vous voulez rejoindre");
    					String nom = sc.nextLine();
    					monClient.monPote.joindreSalon(nom);
    					
    					if((monClient.monPote.messageServeur()).equals("salonOK")){
    						String theme = monClient.monPote.messageServeur();
    						Salon monSalon = new Salon(theme, nom);
    						monSalon.ajouterUnClient(monClient);
    						monClient.salons.add(monSalon);
    						System.out.println("salon rejoint");
    					}
    					else System.out.println("pb pour rejoindre le salon");
    				}
    				else if(commande.equals("msgPrive")){
    					System.out.println("Entrez à qui vous voulez envoyer le message");
    					String aQui = sc.nextLine();
    					System.out.println("Entrez le message");
    					String message = sc.nextLine();
    					monClient.monPote.msgPrive(aQui,message);
    				}
    
    				else if(commande.equals("msgPublic")){
    					for(int i = 0; i<monClient.getSalons().size();i++){
    						System.out.println("\t"+monClient.getSalons().get(i).getNom());
    						System.out.println("\t\t"+monClient.getSalons().get(i).getTheme());
    					}
    					System.out.println("Entrez à quelle salon vous voulez envoyer le message");
    					String salon = sc.nextLine();
    					System.out.println("Entrez le message");
    					String message = sc.nextLine();
    					monClient.monPote.msgPublic(salon,message);
    					
    					}
    				else if(commande.equals("msgPriveDe")){
    					System.out.println("message de " + monClient.monPote.messageServeur());
    					System.out.println("message : " + monClient.monPote.messageServeur());
    				}
    				else if(commande.equals("msgPublicDe")){
    					System.out.println("message de " + monClient.monPote.messageServeur());
    					System.out.println("message : " + monClient.monPote.messageServeur());
    				}
    ...
    			}
    j'ai fait ca pour pouvoir attraper la commande messageprivede ou messagepublicde. car le serveur quand il recoit la commande msgPublic renvoit msgPublicDe. cependant avant j'avais mis un thread d’écoute, et le send et les receive entre le serveur et le client n'étaient pas analogues

    merci d'avance pour vos réponses

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par arnoreffay Voir le message
    j'avais fait un thread d’écoute mais au final, j'ai arrêté. ça marchait pour les message privés mais pas pour le public.
    Il n'y a aucune raison. Explique-nous un peu mieux pourquoi ça ne marcherait pas.

    (Indice : ça marche parfaitement. Aucune différence entre les deux ne peut provoquer de comportement différent. Tu t'es trompé quelque part, tout simplement. Il faut des threads.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [REXX][ISPMLIB]Problème de gestion de messages
    Par M_le_maudit dans le forum z/OS
    Réponses: 5
    Dernier message: 04/06/2013, 15h18
  2. problème envoie d'un message postcommand()
    Par semenzato dans le forum MFC
    Réponses: 4
    Dernier message: 13/01/2004, 17h26
  3. Gestion des message windows dans les threads
    Par billyboy dans le forum Windows
    Réponses: 5
    Dernier message: 06/10/2003, 17h25
  4. socket : problème avec GetHostByName
    Par SteelBox dans le forum Réseau
    Réponses: 25
    Dernier message: 19/08/2003, 13h49
  5. [TFrame] Problème de gestion du OnMouseDown avec une Frame
    Par xherault dans le forum Composants VCL
    Réponses: 5
    Dernier message: 23/05/2003, 15h35

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