Comment Créé un winsock multi client en c ?

Signaler
Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008
-
Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008
-
Bonjour j'aimerais savoir a peut pret l'algorithme d'un programme pour faire un winsock multi client. la partie qui m'interesse c'est le serveur. avez vous une idée de comment faire sous Dev Cpp?

5 réponses

Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
12
bah tu peux trouver des exmples sur le site:
http://www.cppfrance.com/codes/CHAT-SERVEUR-MULTICLIENT-AVEC-BASE-DONNEE-CPLUSPLUS-ACCESS_36993.aspx
http://www.cppfrance.com/codes/ECHANGE-FICHIER-AVEC-SERVEUR-MULTICLIENT_30629.aspx

enfin sur le site y en a plusieurs.
quand tu lance ton serveur, tu commences par définir le nombre de client qui peuvent se connecter, apres dans le accept tu lance une tache pour le traitement de chaque client (meme deux, une tache pour la reception de message et une autre pour l'envoie de message).
Bob...
"Vaut mieux se taire et passer pour un con, que de l'ouvrir et ne laisser aucun doute sur le sujet..."
Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008

sa m'aide pas trop mais mon problème c'est au niveau de la récupèration de l'ip du client ! comment faire ?
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
12
si tu veux juste récupérer l'ip du client, faut faire une recherche dans le forum, la question à été posé plusieurs fois:
http://www.cppfrance.com/infomsg_RECUPERER-IP-CLIENT-SOCKETS-DANS-APP-CLIENT-SERVEUR_567548.aspx
Bob...
"Vaut mieux se taire et passer pour un con, que de l'ouvrir et ne laisser aucun doute sur le sujet..."
Messages postés
43
Date d'inscription
mercredi 30 novembre 2005
Statut
Membre
Dernière intervention
5 décembre 2008

Salut,
un petit exemple de Thread pour accept, si ça ne te dit rien renseigne toi où oublie le Thread.
Retiens seulement qu'une fois la fonction accepte passée tu utilise :


char *ip;ip inet_ntoa(sin.sin_addr);   // avec sin> structure du type SOCKADDR_IN contenant les                                                                 paramètres pour le sock client...








Exemple de code :







DWORD WINAPI THREAD_ACCEPT(LPVOID lpParameter)
{
     char *ip;
     sinsize=sizeof(sin);
     P=(char* )hostname;
     while((sock[i]=accept(server,(SOCKADDR*)&sin[i],&sinsize))!=INVALID_SOCKET)
     {
           
            ip = inet_ntoa(sin[i].sin_addr);   //affichage ip client...
            printf("\n [%d]  %s \t",i+1,ip)
            i++;
            
     }
     return 0;
}

NB: Les variables sock[] sont globales pour être utilisées dans le main{}...!

Voilà n'hésite pas si ya autre chose, bonne chance.

(\__/)
(+'.'+)
(")__(")  @+
Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008

mais jessay ji arrive pas! mais ec que c'est juste ceci :

SOCKET sock[15];
SOCKET csock[15];
SOCKADDR_IN sin[15];
SOCKADDR_IN csin[15];

for (i =0; i <= 15; i++) {
sock[i] = socket(AF_INET, SOCK_STREAM, 0);
sin[i].sin_addr.s_addr = INADDR_ANY;
sin[i].sin_family = AF_INET;
sin[i].sin_port = htons(23);
}
for (i =0; i <= 15; i++) {
bind(sock[i], (SOCKADDR *)&sin[i], sizeof(sin[i]));
listen(sock[i], 0);
}

car jai l'impression que mon client recoi rien !