Bonjour à tous,
J'ai de nouveau un petit probleme sur le quel je bloque...
En faite je suis entrain de faire un chat multi-clients. Je passe par des sockets synchrones histoire qu'il n'y ai pas de pertes mais sa me pose un petit peut probleme vu que le synchrone ne gere pas le multiclient.
Bref j'ai fais un thread qui recois les messages en fonction d'un nouveau socket créé dans un tableau de socket mais le probleme est qu'un tableau est limité. Et meme si il ne l'etait pas il commencerai a prendre beaucoup de place au bout de quelque heure...
bref voici mon code sa sera probablement plus explicatif :
int compteur_serveur = 0 ;
SOCKET sock;
SOCKET csock[50];
DWORD WINAPI ServeurProc(LPVOID lpParam)
{
DWORD ThreadReception;
SOCKADDR_IN sin;
SOCKADDR_IN csin;
int sinsize = sizeof(csin);
sin.sin_addr.s_addr = htonl(INADDR_ANY);
sin.sin_family = AF_INET;
sin.sin_port = htons(666);
sock = socket(AF_INET,SOCK_STREAM,0);
bind(sock, (SOCKADDR *)&sin, sizeof(sin));
listen(sock,0);
while(1)
{
compteur_serveur++;
csock[compteur_serveur] = accept(sock, (SOCKADDR *)&csin, &sinsize);
CreateThread(NULL,NULL,ReceptionnerMessage,NULL,NULL,&ThreadReception);
Sleep(1000);
}
return 0;
}
DWORD WINAPI ReceptionnerMessage(LPVOID lpParam)
{
char message_recu[500];
int err = 0;
int i;
i = compteur_serveur;
strcpy(message_recu,"");
while(err>-1)
{
if (strcmp(message_recu,"")!=0)
{
traiter(message_recu);
}
err = recv(csock[i],message_recu,500,0);
}
return 0;
}
Ca serai tellement plus simple si je pouvai passer csock en argument du thread ReceptionMessage :-)...
Merci d'avance pour toutes reponses!!
@+