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);
}