sisier
Messages postés6Date d'inscriptionvendredi 6 décembre 2002StatutMembreDernière intervention28 mai 2008
-
29 janv. 2003 à 10:25
sisier
Messages postés6Date d'inscriptionvendredi 6 décembre 2002StatutMembreDernière intervention28 mai 2008
-
29 janv. 2003 à 22:09
salut,
Si quelqu'un pouvait m'aider.
En fait, mon probleme est que j'arrive a réaliser une connection en socket client/serveur mais le probleme c que mon prog doit gerer l'affichage et que l'affichage se bloque en attente de reception. C'est pour cela que je veux realiser des sockets non bloquants.
Si quelqu'un pouvait me dire ce que je dois modifier a mon prog pour qu'il soit non bloquant (j'ai essayer en lisant l'aide de msdn mais g pas compris grand chose)
a+
merci
void CReseaux::init_serv()
{
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD(1, 1);
if (WSAStartup(wVersionRequested, &wsaData))
{
AfxMessageBox("Erreur WSAStartup",NULL);
exit(1) ;
}
// reception des données
rec = recv((SocServ2),buffer,64*sizeof(char),0);
// on ajoute un caractere de fin de chaine de caractere
if(rec == WSAEWOULDBLOCK)
{
return 0;
}
else
{
buffer[rec] = '\0' ;
return 1;
cs_NiuoGniP
Messages postés10Date d'inscriptionvendredi 10 janvier 2003StatutMembreDernière intervention16 juin 20031 29 janv. 2003 à 13:03
Explication :
Pour creer une socket il suffit de dériver une classe CMySocket de CSocket (sockets en mode bloquant) ou CAsyncSocket (sockets en mode non bloquant) .
Voila donc en fait pour pas que ton affichage freeze, tu as 2 possiblites. Soit tu utilisesCAsyncSocket, soit tu utilises des Threads.
sisier
Messages postés6Date d'inscriptionvendredi 6 décembre 2002StatutMembreDernière intervention28 mai 2008 29 janv. 2003 à 22:09
merci de ton aide.
J'ai décidé d'opter pour les threads mais j'ai un probleme.
En effet, j'ai besoin de savoir quand se termine le thread pour en lancer un autre (car ce thread se trouve dans un timer) mais je n'ai trouvé qu'une fonction d'attente de thread bloquante ( WaitForSingleObject) alors si vous avez une idée.