Poublem descripteur socket

Résolu
Signaler
Messages postés
108
Date d'inscription
samedi 31 juillet 2004
Statut
Membre
Dernière intervention
12 septembre 2009
-
Messages postés
108
Date d'inscription
samedi 31 juillet 2004
Statut
Membre
Dernière intervention
12 septembre 2009
-
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
A voir également:

2 réponses

Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
3
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.
Messages postés
108
Date d'inscription
samedi 31 juillet 2004
Statut
Membre
Dernière intervention
12 septembre 2009
3
Merci beaucoup aardman
;-)