Poublem descripteur socket [Résolu]

Messages postés
108
Date d'inscription
samedi 31 juillet 2004
Statut
Membre
Dernière intervention
12 septembre 2009
- - Dernière réponse : cs_stillfelil
Messages postés
108
Date d'inscription
samedi 31 juillet 2004
Statut
Membre
Dernière intervention
12 septembre 2009
- 13 sept. 2006 à 09:03
Bonjour je vien de creer un programme Serveur
mais voila j'ai un probleme avec le descripteur SOCKET du client retourné par accept
ca me donne toujour 0 meme si ya connexion de plusieurs client
avec le descripteur su seveur pas de probleme
(jai compris que j'avais un probleme parce que je ne peut pas intercepter les message recus)
voila mon code:

#include <winsock2.h>
 #pragma comment(lib, "ws2_32.lib)
//...
    SOCKET sock;
    SOCKET sockc;
    SOCKADDR_IN ssin;
    SOCKADDR_IN csin;

    const int _http = 80;
   WSADATA WSAData;

    if(WSAStartup(MAKEWORD(2, 0), &WSAData) == SOCKET_ERROR)
    {
        closesocket(sock);
        WSACleanup();
        return;
    }
    ssin.sin_addr.s_addr = htonl(INADDR_ANY);
    ssin.sin_family         = AF_INET;
    ssin.sin_port         = htons(_http);

   
    sock = socket(AF_INET,SOCK_STREAM,0);

   if(    bind(sock, (SOCKADDR *)&ssin, sizeof(ssin))== SOCKET_ERROR)
   {
        closesocket(sock);
        WSACleanup();
        return;
   }

    if( listen(sock, 10)== SOCKET_ERROR)
       {
        closesocket(sock);
        WSACleanup();
        return;
       }
   
    bool running  = true;

    int len = sizeof(csin);
    while(true) // Boucle Infinie pour accepter les connexions entrantes
    {   
     
        if(sockc = accept(sock, (SOCKADDR *)&csin, &len)== SOCKET_ERROR)
        {
            closesocket(sock);
            WSACleanup();
            return;
        }

        if(sockc != INVALID_SOCKET)
        {   
        int nbr_data = 0;
   
    while(nbr_data <=0 )
        {
            nbr_data = recv(sockc,texte,2,0);
            Sleep(500);
        }  
                            //Il ny a aucun message intercepte ,alors que j'envoi commem un message via une
                          //autre socket
        }

Merci de m'aider
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
3
Merci
Salut,
Probleme de priorité, il faut mettre des parentheses:

if( (sockc accept(sock, (SOCKADDR *)&csin, &len)) SOCKET_ERROR)

Au passage, si accept() échoue il retourne INVALID_SOCKET et pas SOCKET_ERROR.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 127 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_aardman
Messages postés
108
Date d'inscription
samedi 31 juillet 2004
Statut
Membre
Dernière intervention
12 septembre 2009
2
0
Merci
Merci beaucoup aardman
;-)
Commenter la réponse de cs_stillfelil