Thr

Signaler
Messages postés
50
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
22 mai 2006
-
Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
-
Salut,
je dois programmer un serveur SMTP qui une fois connecté doit pouvoir ouvrir plusieurs sessions SMTP.

G défini une classe SessionSMTP ke voici mais je voudrais kelle soit un thread (en visual C++)comment dois-je faire pour k'elle en soit un?
En fait g programmé un singleton Connexion, apres l'avoir instancié, je dois pouvoir gérer l'instanciation de plusieurs SessionSMTP (thread).

#include "SessionSMTP.h"



SessionSMTP::SessionSMTP() {}
void SessionSMTP::envoyer(SOCKET s)
{


char sBuf[1024];
int cb;


memset(sBuf, 0x00, 1024);



send(s, "220 SMTP service ready\r\n", 24, 0);


cb = recv(s, sBuf, 1024, 0);
sBuf[cb] = 0x00; //le cb-ième caractère de sBuf doit être un zéro binaire
printf(sBuf);


send(s, "250 ok\r\n", 8, 0);


cb = recv(s, sBuf, 1024, 0);
sBuf[cb] = 0x00;
printf(sBuf);


send(s, "250 ok\r\n", 8, 0);

while(true)
{

while (true)
{
cb = recv(s, sBuf, 1024, 0);
sBuf[cb] = 0x00;
printf(sBuf);


if (memcmp("DATA", sBuf, 4) == 0)
break;


send(s, "250 ok\r\n", 8, 0);


}
send(s, "354 ok\r\n", 8, 0);



while (true)
{
cb = recv(s, sBuf, 1024, 0);
sBuf[cb] = 0x00;
printf(sBuf);
if (memcmp(&sBuf[cb - 5], "\r\n.\r\n", 5) == 0)
break;
}


send(s, "250 SMTP service ready\r\n", 24, 0);


cb = recv(s, sBuf, 1024, 0);
sBuf[cb] = 0x00;
printf(sBuf);


if (memcmp("QUIT", sBuf, 4) == 0)
break;


send(s, "250 ok\r\n", 8, 0);


}



send(s, "221 bye\r\n", 9, 0);
cb = recv(s, sBuf, 1024, 0);
sBuf[cb] = 0x00;
printf(sBuf);


}

1 réponse

Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
Pour créer des threads : CreateThread() (voir MSDN).
Cependant ta fonction si elle se trouve dans une classe devra être static.

@+
Arnotic,
Admin CS, MVP Visual C++