WSAAsyncSelect

lektrosonic Messages postés 145 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 21 février 2013 - 13 janv. 2007 à 00:12
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 - 13 janv. 2007 à 18:37
Bonjour, je souhaite savoir comment utiliser cette fonction...je sais il existe plusieurs tutoriaux mais moi je code en C.
Je doi l introduire dans une bouble ?  Les arguments et les valeurs de retour j'ai compri, je me suis rensigne sur msdn ...
j'ai juste besoin de savoir quand j'utilise la fonction...ou exactement..!

l3KTr0 Was HeRe

11 réponses

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
13 janv. 2007 à 00:21
Salut,

Tu peux appeler cette fonction juste apres avoir créé ton socket, et il
n'y a pas besoin de boucle puisque ce mechanisme utilise les messages
windows pour la notification des evenements.
0
lektrosonic Messages postés 145 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 21 février 2013
13 janv. 2007 à 02:38
Quelqun peut m'expliquer juste le 3eme arguement de cette fonction ?
l3KTr0 Was HeRe
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
13 janv. 2007 à 09:43
Et bien le 3ème argument te permet de choisir dans quel message de ta fenêtre seront traités les différents message du socket.
Exemple (pour être plus clair ) :
si tu veux que les messages envoyés par le socket (réception de données, fermeture, etc...) soient traités dans le message WM_CREATE (ce qui est débile mais c'est pour l'exemple), et bien dans le 3ème argument tu mets WM_CREATE.
Ensuite dans ta WindowProc, tu récupéreras les messages du socket dans WM_CREATE !

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
lektrosonic Messages postés 145 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 21 février 2013
13 janv. 2007 à 15:29
je peux lancer plusieurs fois cette fonction pour chaque evenement different? par exemple je veu la recepyion des donnes avec WM_GET, la fermeture avec WM_CLOSE..les nouvelles connections (pour un serveur) avec WM_ACCEPT ..?

l3KTr0 Was HeRe
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
13 janv. 2007 à 15:33
Je ne crois pas que ça soit possible.
Il me semble que TOUS les messages du socket doivent se traiter dans le même message du style WM_CREATE (très souvent on utilise WM_USER).
Ensuite à l'intérieur de ce message là tu dois traiter chaque sous message si je puis dire.
C'est-à-dire le message qui te dit que tu es connecté,  celui qui te dit tu as reçu des données, etc...

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
lektrosonic Messages postés 145 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 21 février 2013
13 janv. 2007 à 15:35
Les sous-messages sont envoyes dans le wParam ? peut tu m'ecrire le switch qui les identifi ?

l3KTr0 Was HeRe
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
13 janv. 2007 à 15:39
Voilà un exemple d'utilisation pour le traitement des messages :

case WM_USER:
            if(HIWORD(lParam)) Erreur();
            else
            {
                switch(LOWORD(lParam))
                {
                    case FD_ACCEPT:
                        DemandeConnexion();
                    break;
                    case FD_READ:
                        ArriveeDonnees();
                    break;
                    case FD_CLOSE:
                        Fermer();
                    break;
                    case FD_CONNECT:
                        Connecte();
                    break;
                }
            }
            return 0;
        break;

Bien entendu c'est incomplet, dans le sens où il y a des appels de fonctions, tu devras donc adapté à ton usage.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
lektrosonic Messages postés 145 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 21 février 2013
13 janv. 2007 à 15:44
ok merci beaucoup...je n ai juste pas compris le
if(HIWORD(lParam)) Erreur();
            else

l3KTr0 Was HeRe
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
13 janv. 2007 à 15:54
Cela signifie que si les bits de poids fort de lparam ne sont pas tous à zéro, c'est qu'il y a eu une erreur (perte de connexion ou autre) avec le socket.
Après à toi de gérer cette erreur si tu le souhaites.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
lektrosonic Messages postés 145 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 21 février 2013
13 janv. 2007 à 18:30
Comment je traite FD_ACCEPT ?

l3KTr0 Was HeRe
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
13 janv. 2007 à 18:37
Un conseil, lis des tutoriaux. Parce que là visiblement tu ne sais pas du tout comment ça fonctionne et je ne peux pas te faire la leçon, désolé.
C'est pas ce qui manque les tutoriaux en C sur les sockets.

PS : Google est ton ami !

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
Rejoignez-nous