Winsock 2 listen

lektrosonic Messages postés 145 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 21 février 2013 - 12 janv. 2007 à 18:49
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 - 13 janv. 2007 à 09:28
Bonjour, ceci est mon bou de code, je veu mette le socket en mode listen, mais de ke je le fait, ca plante...ce bout de code est sous win32 et la fenetre plante.

En global:
WSADATA WSAData;
SOCKET sock;
SOCKADDR_IN sin;

ensuite:
WSAStartup(MAKEWORD(2,0), &WSAData);
 sin.sin_addr.s_addr = htonl(INADDR_ANY);
sin.sin_family=AF_INET;
 sin.sin_port=htons(4148);
 sock = socket(AF_INET,SOCK_STREAM,0);
 bind(sock,(SOCKADDR *)&sin,sizeof(sin));

et finalement:
listen(sock, 0);
int val = 0;
while(1)
{
val = accept(sock, (SOCKADDR *)&sin, sizeof(sin));
if(val != INVALID_SOCKET)
{
                    // Fonctions a` e'xe'cuter sur le socket.
}
}

l3KTr0 Was HeRe

2 réponses

laetitiavincent Messages postés 61 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 19 janvier 2007
12 janv. 2007 à 23:01
Dis moi : comment ta socket peut etre créée sur sin et accepter sur sin. Il s'accepte lui-même ???????????

Essaye de rajouter

SOCKADDR_IN sin2;
et remplace
val = accept(sock, (SOCKADDR *)&sin, sizeof(sin));
par
val = accept(sock, (SOCKADDR *)&sin2, sizeof(sin2));

 Laetitia
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
13 janv. 2007 à 09:28
Salut lektrosonic !

Egalement à la place de :
int val = 0;
mets :
SOCKET val;

Ca ne change pas grand chose mais c'est plus propre.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
Rejoignez-nous