Problème socket sous windows

kod32 Messages postés 46 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 13 novembre 2004 - 7 mai 2004 à 23:01
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 - 8 mai 2004 à 22:47
Voici mon code : (winsock2.h)

-----------------------------
int main()
{
/* inialisation */
WSADATA wsa;
WSAStartup(MAKEWORD(2,0), &wsa);
/* creation de la socket serveur */
SOCKET serveur;
SOCKADDR_IN sin;

serveur=socket(AF_INET,SOCK_STREAM,0);
if(serveur==INVALID_SOCKET)
{
printf("Erreur création de socket");
exit(1);
}
/* configuration de la socket */
sin.sin_addr.s_addr = INADDR_ANY;
sin.sin_family = AF_INET;
sin.sin_port = htons(PORT);
listen(serveur,5);

while(1)
{
SOCKET client = accept(serveur, NULL, NULL);
if(client == INVALID_SOCKET)
{
printf("Erreur de connexion du client");
exit(1);
}
/* fonction de traitement de la requete */
analyz(client);
}
return 0;
}
----------------------------

Une socket serveur classique mais je ne comprends pas pourquoi le serveur n'écoute pas, il m'affiche direct "Erreur de connexion du client" qd je lance l'exe.
La compil se passe bien (devC++)

Merci

1 réponse

cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
8 mai 2004 à 22:47
avant "listen(serveur,5);" :

if (bind(serveur,(LPSOCKADDR)&sin,sizeof(sin)) == INVALID_SOCKET)
{
printf("Erreur lors de bind (sans doute : port déja utilisé).");
exit(1);
}

if (listen(serveur,5) == INVALID_SOCKET)
{
printf("Erreur lors du listen");
exit(1);
}
while(1)
{
SOCKET client = accept(serveur, NULL, NULL);
if(client == INVALID_SOCKET)
{
printf("Erreur de connexion du client");
exit(1);
}
/* fonction de traitement de la requete */
analyz(client);
}

t'avais oublié d'associer les informations qu'il y a dans sin au socket serveur (ce que l'on fait avec bind), cé pour ca ke ca te faisait un erreur.
a+ ;)
0
Rejoignez-nous