Probleme avec les sockets en C
g33kzone
Messages postés
40
Date d'inscription
Statut
Membre
Dernière intervention
-
HackStyle Messages postés 30 Date d'inscription Statut Membre Dernière intervention -
HackStyle Messages postés 30 Date d'inscription Statut Membre Dernière intervention -
Bonjour, je débute en C et je me suis récemment interressé aux socket (sous windows) , seulement il y a quelque chose que je ne comprends pas avec deux fonctions : send() et recv() dont voici le prototype :
int send(
__in SOCKET s,
__out char *buf,
__in int len,
__in int flags
);
int recv(
__in SOCKET s,
__out char *buf,
__in int len,
__in int flags
);
la fonction recv est sensé modifier le contenu de la variable buf à l'aide d'un pointeur seulement tous les appels de fonctions que j'ai vu jusqu'a présent dans les cours et exemples sur les sockets étaient faits de cette maniere :
recv(s,buf,sizeof(buf),0);
je ne comprends pas comment une fonction peux modifier le contenu d'une variable sans passer par un pointeur , pouvez vous m'éclaircir sur la question . Merci de votre aide
int send(
__in SOCKET s,
__out char *buf,
__in int len,
__in int flags
);
int recv(
__in SOCKET s,
__out char *buf,
__in int len,
__in int flags
);
la fonction recv est sensé modifier le contenu de la variable buf à l'aide d'un pointeur seulement tous les appels de fonctions que j'ai vu jusqu'a présent dans les cours et exemples sur les sockets étaient faits de cette maniere :
recv(s,buf,sizeof(buf),0);
je ne comprends pas comment une fonction peux modifier le contenu d'une variable sans passer par un pointeur , pouvez vous m'éclaircir sur la question . Merci de votre aide
A voir également:
- Probleme avec les sockets en C
- Compatibilité socket 1155 possible avec d'autre ? ✓ - Forum Carte-mère/mémoire
- Problème web-socket php cloudflare ✓ - Forum Hébergement
- AIDEZ MOI SVP / CM AVEC PINS TORDUE SOCKET - Forum Carte-mère/mémoire
- J'ai tordu les pins du socket de mon processeur... - Forum Processeur
- Socket: envoyer un message avec UDP sur internet - Forum Python
3 réponses
Euh... Si tu connais bien tes leçons sur le C, tu devrais savoir que si une variable tableau n'est pas suivis des crochets pour spécifier l'élément voulu, cette variable donne l'adresse du premier élément (0).
Ces codes sont strictement égaux :
recv(s,&buf[0],sizeof(&buf[0]),0); // On donne l'adresse du premier élément
recv(s,buf,sizeof(buf),0); // Pareil
Ciao ;).
Ces codes sont strictement égaux :
recv(s,&buf[0],sizeof(&buf[0]),0); // On donne l'adresse du premier élément
recv(s,buf,sizeof(buf),0); // Pareil
Ciao ;).
Salut,
En fait en C, même si tu mets le tableau, le compilateur remplacera par l'adresse de celui-ci. Dis autrement, le passage de tableaux se fait par adresse et non par copie contrairement aux variables classiques.
Voilà pourquoi la fonction peut modifier le contenu de ton tableau ;-)).
En fait en C, même si tu mets le tableau, le compilateur remplacera par l'adresse de celui-ci. Dis autrement, le passage de tableaux se fait par adresse et non par copie contrairement aux variables classiques.
Voilà pourquoi la fonction peut modifier le contenu de ton tableau ;-)).
Voila ce qui arrive quand on utilise les notions avancés sans de solides bases mdr...
Ah ouais fiddy c'est exact ! le boulet que je suis, j'ai carement zappé ça moi !
J'ai verifier et c'est exacte, je suis sur que je vien de découvrire la source de 20% de mes problémes lol.
Aller ciao ! Merci pour la petite leçon que je zappé toujours concernant les tabs.
@++
EDIT: Désolé g33kzone pour ces fausses infos
Ah ouais fiddy c'est exact ! le boulet que je suis, j'ai carement zappé ça moi !
J'ai verifier et c'est exacte, je suis sur que je vien de découvrire la source de 20% de mes problémes lol.
Aller ciao ! Merci pour la petite leçon que je zappé toujours concernant les tabs.
@++
EDIT: Désolé g33kzone pour ces fausses infos
savoir que si une variable tableau n'est pas suivis des crochets pour spécifier l'élément voulu, cette variable donne l'adresse du premier élément (0).
Non. Il ne faut pas confondre avec le pointeur. Pour t'en convaincre :
Si tu as un tableau char buf[250];
sizeof buf, ça te renvoie 250
sizeof &buf[0], ça te renverra 4 (sur machine 32 bits).
Donc tes codes ne sont pas égaux du tout ;-)).