chrno84
Messages postés2Date d'inscriptionsamedi 13 décembre 2008StatutMembreDernière intervention13 décembre 2008
-
13 déc. 2008 à 14:34
chrno84
Messages postés2Date d'inscriptionsamedi 13 décembre 2008StatutMembreDernière intervention13 décembre 2008
-
13 déc. 2008 à 23:43
Bonjour, je pense avoir un probléme avec ma fonction recv, en effet
elle me retourne la valeur -1, mon send fonctionne bien (retourne une
valeur >0) je vous met le code.
Voila mon code sur le serveur :
int ts=accept(sock,(struct sockaddr*)&sin,(socklen_t*)&sin);
if(ts>0)cout<<"connection ok !!"<<endl;else cout<<"connection failed"<<endl;
int taille = recv(sock,msg,sizeof(msg), 0); // probleme dans la reception de msg
//cout<<msg<<endl;// probléme de recept msg
msg[taille] = '\0' ;
int nbEcho = atoi(msg);
for(int i = 0 ; i<nbEcho ; ++i)
{
int taille = recv(sock, msg, sizeof(msg), 0);
//recoit une info et remplit la variable avec
msg[taille] = '\0' ; // marqueur de fin de chaine
cout << "Message reçu : " << msg << endl;
send(sock, (void *) msg, taille, 0);
//transtype le message
}
return 0;
}
et voila la partie client :
int co=connect(sock,(struct sockaddr*)&sin,sizeof(sin));
char msg[2048];
string envoi;
int coo=send(sock,(void*)argv[3], strlen(argv[3]), 0);//le send fonctionne
cout<<coo<<endl;
si vous trouvez une solution, sa serais super, car je commence vraiment a m'arracher les cheveux...
cs_goodboy21
Messages postés29Date d'inscriptionsamedi 1 décembre 2007StatutMembreDernière intervention11 avril 2010 13 déc. 2008 à 16:27
salut, tu dois mette ts dans la fonction recv ,
car ton sock c'est juste pr accepter les clients et ton ts est l'autre bout de la connexion.
recv(ts,msg,sizeof(msg), 0);
ensuite si t'es pas sur de la taille que tu dois lire utilise ioctlsocket:
int count;
ioctlsocket(client,FIONREAD,(unsigned long*)&count); //combien d'octet on a à lire;
char buf[100];
recv(client,buf,count,0);