Comment Créé un winsock multi client en c ?

sebastienmz Messages postés 139 Date d'inscription mardi 16 mai 2006 Statut Membre Dernière intervention 23 juin 2008 - 22 sept. 2006 à 14:26
sebastienmz Messages postés 139 Date d'inscription mardi 16 mai 2006 Statut Membre Dernière intervention 23 juin 2008 - 28 sept. 2006 à 10:55
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

cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
22 sept. 2006 à 14:36
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..."
0
sebastienmz Messages postés 139 Date d'inscription mardi 16 mai 2006 Statut Membre Dernière intervention 23 juin 2008
22 sept. 2006 à 15:04
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 ?
0
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
22 sept. 2006 à 16:26
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..."
0
ssmint Messages postés 43 Date d'inscription mercredi 30 novembre 2005 Statut Membre Dernière intervention 5 décembre 2008
25 sept. 2006 à 19:33
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.

(\__/)
(+'.'+)
(")__(")  @+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sebastienmz Messages postés 139 Date d'inscription mardi 16 mai 2006 Statut Membre Dernière intervention 23 juin 2008
28 sept. 2006 à 10:55
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 !
0
Rejoignez-nous