shadow1779
Messages postés706Date d'inscriptionmercredi 17 novembre 2004StatutMembreDernière intervention29 septembre 2013
-
29 déc. 2005 à 11:56
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 2012
-
29 déc. 2005 à 17:30
Bonjour,
j'commence a me debrouiller avec les sockets non bloquants mais j'ai juste un probleme, j'essai de me faire un mailer anonyme donc je met dans mon case ID_ENVOYER (qui correspond a mon bouton envoyer un mail)
case ID_ENVOYER:
//on envoi la commande d'arrivée
sprintf(buffer,"helo smtp\r\n");
send(sock,buffer,sizeof(buffer),0);
et j'ai mon case FD_READ, cependant quand le helo smtp s'affiche dans l'editbox on dirai que cela ne retourne rien, bref ma question est: est ce que le code dans le case FD_READ marche meme au fur et a mesure que cela fait les actions du case ID_ENVOYER,
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 29 déc. 2005 à 14:43
En effet si buffer est un pointeur, sizeof va te renvoyer 4 qui correspond a la "taille" alloué pour un pointeur.
Au lieu de faire 15 fois GetDlgItem, déclare des variables globales pour les handles de tes controles et initialises les dans le WM_INITDILAOG.
Sinon soit plus précis sur ton pb car pour ma part j'ai pas bien saisi ou est le probleme ?
Le FD_READ est un événement généré a la reception de données sur une socket.
Il en va donc que si ta DlgProc bloque sur ton ID_ENVOYER, ton FD_READ serra en attente.
shadow1779
Messages postés706Date d'inscriptionmercredi 17 novembre 2004StatutMembreDernière intervention29 septembre 2013 29 déc. 2005 à 14:49
bein le probleme c'est que lorsque je clic sur mon ID_ENVOYER il envoi les requetes a la suite, mais moi j'aimerai aussi qu'il puisse lire les messages renvoyés par le server smtp pour dire si la requetes est passé OK ou ERROR
Vous n’avez pas trouvé la réponse que vous recherchez ?
shadow1779
Messages postés706Date d'inscriptionmercredi 17 novembre 2004StatutMembreDernière intervention29 septembre 2013 29 déc. 2005 à 17:14
ouai mais j'vai pas faire un recv() apres chaque send quand meme, ce que j'aurai voulu c'est ne gerer que les send et qu'il passe automatiquement par le FD_READ pour lire constamment ce qu'il se passe a n'importe quel moment
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 29 déc. 2005 à 17:18
Je pense que si, tu dois faire un recv après chaque send, ca me semble logique, c'est le principe du dialogue. Enfin je connais pas trop (pas du tout) les sockets, mais je suis quasiment sur que tu dois faire comme ca.
De plus, une lecture non bloquante je trouve ca bizarre...
Attendons que aardman passe dans le coin, il te conseillera mieux que moi
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 29 déc. 2005 à 17:30
Salut,
C'est plutot dans le FD_READ qu'il faut mettre le recv(), c'est le
message de notification qui est envoyé lorsque le buffer de reception
du socket contient des données.
Si tu recois 100 octets, et que dans le FD_READ tu en lis que 50, alors
tu recevra un nouveau FD_READ puisque le buffer du socket n'est
toujours pas vide.