Bloqué sur un accept

anthonycosson Messages postés 106 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 20 novembre 2009 - 20 oct. 2005 à 14:45
anthonycosson Messages postés 106 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 20 novembre 2009 - 3 nov. 2005 à 13:43
bonjour tt le mnd
erveur tcp en mfc je suis bloquer sur un accept qui foir mon programme
merci d'avance

8 réponses

tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 2
20 oct. 2005 à 14:47
kelke explication serai les bienvenues!
Bloqué! c à d?
0
anthonycosson Messages postés 106 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 20 novembre 2009
20 oct. 2005 à 14:57
voila les meilleurs explications::

void CtcpseqDoc::demarrage_serveur()


{


SOCKET slave;


SOCKET fd_socket;


struct sockaddr_in addr;


ZeroMemory(&addr,
sizeof(addr));


addr.sin_family=AF_INET;


addr.sin_port=htons(7000);


addr.sin_addr.s_addr=INADDR_ANY;


struct sockaddr_in client;


size_t clientlen=
sizeof(client);


fd_socket = socket(AF_INET,SOCK_STREAM,0);


if(fd_socket==-1)


{


MessageBox(0,"erreur socket","ERREUR",0);


exit(0);


}


if(bind(fd_socket,(
struct sockaddr*)&addr,
sizeof(addr))==-1)


{


MessageBox(0,"erreur bind","ERREUR",0);


exit(0);


}


if(listen(fd_socket,5)==-1)


{


MessageBox(0,"erreur listen","ERREUR",0);


exit(0);


}


slave=accept(fd_socket,(
struct sockaddr*)&client,(socklen_t*)&clientlen);


/*la plus rien le prog ce bloq et il ne veu plus rien entendre*/
0
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 2
20 oct. 2005 à 15:09
OK,
c normal accepte (tout come recv ke tu utilisera certainement) est une fonction bloquante donc tant qu'il ya personne ça restera bloqué.
2 solutions.
-soit tu fait un Thread pour cette fonction et pend recv.
-soit tu param ton socket avec la fonction ioctlsocket(Socket, FIONBIO,1)

voili
a++;
0
anthonycosson Messages postés 106 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 20 novembre 2009
20 oct. 2005 à 15:34
maintenant le accept marche mais retourne -1 on a opter pour le ioctlsocket(fd_socket, FIONBIO,&t); avant le while(1)

if(listen(fd_socket,5)==-1)


{


MessageBox(0,"erreur listen","ERREUR",0);


exit(0);


}


u_long t=1;


========>ioctlsocket(fd_socket, FIONBIO,&t);


while(1)


{


slave=accept(fd_socket,(
struct sockaddr*)&client,(socklen_t*)&clientlen);

et comment tu ferai avec un thread ???

merci
0

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

Posez votre question
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 2
20 oct. 2005 à 15:44
c normal qu'il te retourne -1 (et d'allieur ça peut etre un inconvégnant) l te retournera toujours -1 dés que quelqu'un se conecte il t'envoi alors le socket puis re -1 ...

PS a propos de la fonction recv() c la même chose! -1 quand rien n'est reçu et les nombres d'octet quand tu reçoit quelque chose
0
anthonycosson Messages postés 106 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 20 novembre 2009
20 oct. 2005 à 15:57
ok g compri mai maintenant je galère a instantié mon thread
peut tu m'aider
merci
0
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 2
24 oct. 2005 à 15:54
Désolé pour mon absence.Mais pas eu le temps de venir.
Quel est ton problème avec le Thread?
0
anthonycosson Messages postés 106 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 20 novembre 2009
3 nov. 2005 à 13:43
dsl de repondre 2 semaine plus tard alors le probleme etai que il me refuser un parametre dans la fonction createthread alors g essayé avec afxbeginthread mais je capte pas trop commen l'initialiser
alors si tu pouvait me donner un petit ex de fonctionnement ce serai tres sympa
merci d'anvance
0
Rejoignez-nous