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

MFC Discussion :

Ti logiciel de tchat


Sujet :

MFC

  1. #1
    xfg
    xfg est d�connect�
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1
    Par d�faut Ti logiciel de tchat
    Bonjour a tous (c'est mon 1er post...):

    Voila, histoire d'apprendre les sockets, je me suis fait un ptit logiciel de tchat, mais jai un probleme:

    deja, voila (en gros) mon logiciel:

    -j'ai une procedure serveur qui a une boucle recv
    -et une procedure client avec une boucle send
    -et un menu qui permet de choisir une des 2 procedures

    Il faut donc que sur chaque pc, j'ouvre 2 fenetres pour tchatter, et c'est pas cool...

    J'aimerais bien faire en sorte que chaque personne aie une seule fenetre qui envoie/re�oit...

    Mais voila, je suis confront� aux problemes suivants:

    1- Je suis dans une console cmd, donc je sais pas si �a a de l'importance (je pense pas, mais bon...)
    2- J'ai essay� de faire des threads, mais voila, autre probleme: faut-il que je cr�e une socket dans chaque thread? (et j'ai essay�, �a a pas l'air de bien marcher) J'ai essay� aussi de faire une socket puis de faire un processus, mais voila, j'arrive pas a passer mes parametres...

    Autre question: si je lance mes 2 fenetres sur chaque pc, ya pas de bug? Enfin, si ya 2 connexions sur le meme port, je suis pas sur que �a le fasse, si?


    Voila voila... Je suis en DUT informatique, et j'ai demand� a mes profs... Sauf qu'entre les profs sous linux (bah ouais, winsock2.h, ya pas tp sous linux) et ceux qui savent pas...


    Merci d'avance!

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    1�) Tu peux tout-�-fait rester en mode console si tu n'utilises pas une extension Windows aux sockets (tr�s pratique), la fonction WSAAsyncSelect().
    2�) G�n�ralement, quand on fait un serveur multithread�, on n'utilise pas un socket pour chaque thread, mais un thread pour chaque socket, en cr�ant un thread � chaque fois qu'un client se connecte. Mais tu peux aussi faire un serveur multi-client monothread�, en utilisant la fonction select() (ou l'extension Windows WSAWaitForMultipleEvents())

    3�) Tu ne peux pas lan�er simultan�ment deux serveurs sur le m�me PC et le m�me port. Par contre, tu n'as pas de limitation quant aux clients.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    227
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 227
    Par d�faut
    Citation Envoy� par xfg
    -j'ai une procedure serveur qui a une boucle recv
    -et une procedure client avec une boucle send
    -et un menu qui permet de choisir une des 2 procedures
    Une fois que la conexion est �tablie entre le client et le serveur tu peut faire des send et/ou des recv aussi bien chez le client que chez le serveur.

    En fait il te faut v�rifier :
    -s'il y a des nouveau messages
    -s'il y a un message pr�t � envoyer

    Ta juste a mettre ces deux op�rations dans une boucle avec ces condtions :
    -s'il y a un nouveau mesage alors on l'affiche
    -s'il un message est pr�t � poster alors on l'envoi

    Tu doit �tre bloqu� parce que tes sockets sont en mode bloquant et la fonction recv() attend l'arriv� d'un message pour continuer l'excution du programme.
    Pour passer en mode non-bloquant tu fait comme �a :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    //ta socket doit être crée (et le connection établie je croit)
    //une fois que la socket fonctionne tu insère ces 2 lignes
    u_long argp=1;
    ioctlsocket(ta_socket, FIONBIO, &argp);
    // et ton socket est en mode non-bloquant
    Losrque le socket est en mode non-bloquant la fonction recv() renvoi une valeur imm�diatement apr�s son appel, s'il n'y a pas de message dans le tampon de reception elle renvoie -1 donc pour v�rifier les nouveau message tu fait un truc de ce style :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    if(recv(ta_socket, buffer, 50, 0)!=-1)  //ici on reçoit un message de 50 octets dans la varialbe "buffer" s'il il y en a un reçevoir
    {
    //traitement du message
    }
    Je croi que recv() peut renvoyer 0 aussi quant la connection n'a pas �t� ferm�e correctement, donc si tu veut pas de probl�me tu peut mettre
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    if(recv(ta_socket, buffer, 50, 0)<=0)
    //au lieu de
    if(recv(ta_socket, buffer, 50, 0)!=-1)
    N'esite pas si ta encore un probl�me

Discussions similaires

  1. Quel logiciel (EDI) pour d�buter en programmation ?
    Par mimosa69 dans le forum D�bats sur le d�veloppement - Le Best Of
    R�ponses: 13
    Dernier message: 17/01/2016, 16h45
  2. Logiciel et Progiciel
    Par Toine dans le forum Autres Logiciels
    R�ponses: 10
    Dernier message: 10/04/2012, 13h28
  3. R�ponses: 2
    Dernier message: 13/03/2007, 20h11
  4. logiciel de programmation en Algorithmique
    Par Thomas Lebrun dans le forum Algorithmes et structures de donn�es
    R�ponses: 11
    Dernier message: 08/11/2002, 22h18
  5. Cours, tutoriels, logiciels, F.A.Q,... pour le langage SQL
    Par Marc Lussac dans le forum Langage SQL
    R�ponses: 0
    Dernier message: 04/04/2002, 10h21

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