Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : recv() et du brol [ Archives / Réseau / Internet ] (epoc)

samedi 30 août 2003 à 17:12:29 | recv() et du brol

epoc

hum... encore moi!

g un petit prob avec la fonction recv() ou send(), je c pas trop.

dans mon client j'ai ça :

char *buffer = new char[1024];

buffer="NEW MSG";
if(send(sock,buffer,strlen(buffer),0)!=0){
m_Edit.GetWindowText(recup);
m_Edit.SetWindowText(recup+"# Message envoyé\r\n");
}
else{
...
}

dans mon serveur j'ai ça :

char *recvbuffer = new char[1024];

if(recv(ClientSocket, recvbuffer, strlen(recvbuffer), 0) != SOCKET_ERROR){
AfxMessageBox(recvbuffer);
}

en gros dans ma message box j'aurai NEW MSG et une chiée de caratères à la suite.

Si qqun avait encore la patiente de m'expliquer ça serait bien sympa.

merci

++

samedi 30 août 2003 à 17:21:28 | Re : recv() et du brol

aardman

Membre Club
Salut,
Dans ton appel recv() il faut passer la taille du buffer de reception en 3eme argument, toi tu as utilisé strlen, et comme ton buffer est vide, ca doit retourner 0.
Essaye plutot:
recv(ClientSocket, recvbuffer, sizeof(char[1024]), 0);



-------------------------------
Réponse au message :
-------------------------------

> hum... encore moi!
>
> g un petit prob avec la fonction recv() ou send(), je c pas trop.
>
> dans mon client j'ai ça :
>
> char *buffer = new char[1024];
>
> buffer="NEW MSG";
> if(send(sock,buffer,strlen(buffer),0)!=0){
> m_Edit.GetWindowText(recup);
> m_Edit.SetWindowText(recup+"# Message envoyé\r\n");
> }
> else{
> ...
> }
>
> dans mon serveur j'ai ça :
>
> char *recvbuffer = new char[1024];
>
> if(recv(ClientSocket, recvbuffer, strlen(recvbuffer), 0) != SOCKET_ERROR){
> AfxMessageBox(recvbuffer);
> }
>
> en gros dans ma message box j'aurai NEW MSG et une chiée de caratères à la suite.
>
> Si qqun avait encore la patiente de m'expliquer ça serait bien sympa.
>
> merci
>
> ++

samedi 30 août 2003 à 17:22:48 | Re : recv() et du brol

BruNews

Administrateur CodeS-SourceS
buffer="NEW MSG"; ????
tu changes l'adresse du buffer, pourquoi ?
Le mfc fait vraiment des degats dans les neurones.
strcpy(buffer, "NEW MSG");
BruNews, ciao...


-------------------------------
Réponse au message :
-------------------------------

> hum... encore moi!
>
> g un petit prob avec la fonction recv() ou send(), je c pas trop.
>
> dans mon client j'ai ça :
>
> char *buffer = new char[1024];
>
> buffer="NEW MSG";
> if(send(sock,buffer,strlen(buffer),0)!=0){
> m_Edit.GetWindowText(recup);
> m_Edit.SetWindowText(recup+"# Message envoyé\r\n");
> }
> else{
> ...
> }
>
> dans mon serveur j'ai ça :
>
> char *recvbuffer = new char[1024];
>
> if(recv(ClientSocket, recvbuffer, strlen(recvbuffer), 0) != SOCKET_ERROR){
> AfxMessageBox(recvbuffer);
> }
>
> en gros dans ma message box j'aurai NEW MSG et une chiée de caratères à la suite.
>
> Si qqun avait encore la patiente de m'expliquer ça serait bien sympa.
>
> merci
>
> ++

samedi 30 août 2003 à 17:59:35 | Re : recv() et du brol

epoc

quand je mets strlen j'ai ça :
NEW MSGÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ... bien loin

quand je mets sizeof j'ai ça :

NEW ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ...
MSGÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ...

soit 2 messages à la place d'un.

-------------------------------
Réponse au message :
-------------------------------

> Salut,
> Dans ton appel recv() il faut passer la taille du buffer de reception en 3eme argument, toi tu as utilisé strlen, et comme ton buffer est vide, ca doit retourner 0.
> Essaye plutot:
> recv(ClientSocket, recvbuffer, sizeof(char[1024]), 0);
>
>
>

samedi 30 août 2003 à 18:10:14 | Re : recv() et du brol

aardman

Membre Club
C'est a cause de tes alloc bizzares ca...
dans le serveur et le client declare ton buffer comme ca:
char buffer[1024]; // simple tableau de char
Utilise strcpy() pour remplir ton buffer dans le client.

dans le client: send() avec strlen() en 3eme argument,
dans le serveur: recv() avec sizeof() en 3eme argument.

La ca devrait marcher.

-------------------------------
Réponse au message :
-------------------------------

> quand je mets strlen j'ai ça :
> NEW MSGÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ... bien loin
>
> quand je mets sizeof j'ai ça :
>
> NEW ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ...
> MSGÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ...
>
> soit 2 messages à la place d'un.
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Salut,
> > Dans ton appel recv() il faut passer la taille du buffer de reception en 3eme argument, toi tu as utilisé strlen, et comme ton buffer est vide, ca doit retourner 0.
> > Essaye plutot:
> > recv(ClientSocket, recvbuffer, sizeof(char[1024]), 0);
> >
> >
> >

samedi 30 août 2003 à 18:23:43 | Re : recv() et du brol

epoc

c'est ce que j'avais lors de mon dernier message, ça me donne ça :

> > NEW ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ...
> > MSGÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ...

en fait il découpe mon message tous les 4 caractères, jai essayé avec un message plus long.

donc ca ne marche toujours pas :-/

-------------------------------
Réponse au message :
-------------------------------

> C'est a cause de tes alloc bizzares ca...
> dans le serveur et le client declare ton buffer comme ca:
> char buffer[1024]; // simple tableau de char
> Utilise strcpy() pour remplir ton buffer dans le client.
>
> dans le client: send() avec strlen() en 3eme argument,
> dans le serveur: recv() avec sizeof() en 3eme argument.
>
> La ca devrait marcher.
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > quand je mets strlen j'ai ça :
> > NEW MSGÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ... bien loin
> >
> > quand je mets sizeof j'ai ça :
> >
> > NEW ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ...
> > MSGÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ...
> >
> > soit 2 messages à la place d'un.
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Salut,
> > > Dans ton appel recv() il faut passer la taille du buffer de reception en 3eme argument, toi tu as utilisé strlen, et comme ton buffer est vide, ca doit retourner 0.
> > > Essaye plutot:
> > > recv(ClientSocket, recvbuffer, sizeof(char[1024]), 0);
> > >
> > >
> > >
>

samedi 30 août 2003 à 18:37:55 | Re : recv() et du brol

aardman

Membre Club
Tu lis mes messages a moitier ...

On reprend:
si tu declare ton buffer comme ca:
char *buffer = new char[1024];

et que tu fais strlen(buffer), cela te retourne 4.
Voila pourquoi tu recois 2 paquets de 4 octets.

Maintenant, si tu declares ton buffer je t'ai dis:
char buffer[1024];
et que tu passe strlen(buffer)+1 en 3eme argument de send() (javais oublié le +1 dans mon precedent post) cela retourne le nombre d'octet de la chaine + le caractere null.

Et la ca marche.



-------------------------------
Réponse au message :
-------------------------------

> c'est ce que j'avais lors de mon dernier message, ça me donne ça :
>
> > > NEW ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ...
> > > MSGÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ...
>
> en fait il découpe mon message tous les 4 caractères, jai essayé avec un message plus long.
>
> donc ca ne marche toujours pas :-/
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > C'est a cause de tes alloc bizzares ca...
> > dans le serveur et le client declare ton buffer comme ca:
> > char buffer[1024]; // simple tableau de char
> > Utilise strcpy() pour remplir ton buffer dans le client.
> >
> > dans le client: send() avec strlen() en 3eme argument,
> > dans le serveur: recv() avec sizeof() en 3eme argument.
> >
> > La ca devrait marcher.
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > quand je mets strlen j'ai ça :
> > > NEW MSGÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ... bien loin
> > >
> > > quand je mets sizeof j'ai ça :
> > >
> > > NEW ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ...
> > > MSGÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ...
> > >
> > > soit 2 messages à la place d'un.
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Salut,
> > > > Dans ton appel recv() il faut passer la taille du buffer de reception en 3eme argument, toi tu as utilisé strlen, et comme ton buffer est vide, ca doit retourner 0.
> > > > Essaye plutot:
> > > > recv(ClientSocket, recvbuffer, sizeof(char[1024]), 0);
> > > >
> > > >
> > > >
> >
>

samedi 30 août 2003 à 19:01:28 | Re : recv() et du brol

epoc

ok ça marche. J'ai déclaré char recvbuffer[1024]; pour la fonction recv() et send() et avec le +1 tout fonctionne nickel.

Encore un grand merci!

En fait, tu travailles dans le développement?

-------------------------------
Réponse au message :
-------------------------------

> Tu lis mes messages a moitier ...
>
> On reprend:
> si tu declare ton buffer comme ca:
> char *buffer = new char[1024];
>
> et que tu fais strlen(buffer), cela te retourne 4.
> Voila pourquoi tu recois 2 paquets de 4 octets.
>
> Maintenant, si tu declares ton buffer je t'ai dis:
> char buffer[1024];
> et que tu passe strlen(buffer)+1 en 3eme argument de send() (javais oublié le +1 dans mon precedent post) cela retourne le nombre d'octet de la chaine + le caractere null.
>
> Et la ca marche.
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > c'est ce que j'avais lors de mon dernier message, ça me donne ça :
> >
> > > > NEW ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ...
> > > > MSGÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ...
> >
> > en fait il découpe mon message tous les 4 caractères, jai essayé avec un message plus long.
> >
> > donc ca ne marche toujours pas :-/
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > C'est a cause de tes alloc bizzares ca...
> > > dans le serveur et le client declare ton buffer comme ca:
> > > char buffer[1024]; // simple tableau de char
> > > Utilise strcpy() pour remplir ton buffer dans le client.
> > >
> > > dans le client: send() avec strlen() en 3eme argument,
> > > dans le serveur: recv() avec sizeof() en 3eme argument.
> > >
> > > La ca devrait marcher.
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > quand je mets strlen j'ai ça :
> > > > NEW MSGÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ... bien loin
> > > >
> > > > quand je mets sizeof j'ai ça :
> > > >
> > > > NEW ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ...
> > > > MSGÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ...
> > > >
> > > > soit 2 messages à la place d'un.
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > Salut,
> > > > > Dans ton appel recv() il faut passer la taille du buffer de reception en 3eme argument, toi tu as utilisé strlen, et comme ton buffer est vide, ca doit retourner 0.
> > > > > Essaye plutot:
> > > > > recv(ClientSocket, recvbuffer, sizeof(char[1024]), 0);
> > > > >
> > > > >
> > > > >
> > >
> >
>

samedi 30 août 2003 à 19:04:47 | Re : recv() et du brol

aardman

Membre Club
Salut,
non, je suis lycéen.
Content que ca marche.



-------------------------------
Réponse au message :
-------------------------------

> ok ça marche. J'ai déclaré char recvbuffer[1024]; pour la fonction recv() et send() et avec le +1 tout fonctionne nickel.
>
> Encore un grand merci!
>
> En fait, tu travailles dans le développement?
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Tu lis mes messages a moitier ...
> >
> > On reprend:
> > si tu declare ton buffer comme ca:
> > char *buffer = new char[1024];
> >
> > et que tu fais strlen(buffer), cela te retourne 4.
> > Voila pourquoi tu recois 2 paquets de 4 octets.
> >
> > Maintenant, si tu declares ton buffer je t'ai dis:
> > char buffer[1024];
> > et que tu passe strlen(buffer)+1 en 3eme argument de send() (javais oublié le +1 dans mon precedent post) cela retourne le nombre d'octet de la chaine + le caractere null.
> >
> > Et la ca marche.
> >
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > c'est ce que j'avais lors de mon dernier message, ça me donne ça :
> > >
> > > > > NEW ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ...
> > > > > MSGÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ...
> > >
> > > en fait il découpe mon message tous les 4 caractères, jai essayé avec un message plus long.
> > >
> > > donc ca ne marche toujours pas :-/
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > C'est a cause de tes alloc bizzares ca...
> > > > dans le serveur et le client declare ton buffer comme ca:
> > > > char buffer[1024]; // simple tableau de char
> > > > Utilise strcpy() pour remplir ton buffer dans le client.
> > > >
> > > > dans le client: send() avec strlen() en 3eme argument,
> > > > dans le serveur: recv() avec sizeof() en 3eme argument.
> > > >
> > > > La ca devrait marcher.
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > quand je mets strlen j'ai ça :
> > > > > NEW MSGÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ... bien loin
> > > > >
> > > > > quand je mets sizeof j'ai ça :
> > > > >
> > > > > NEW ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ...
> > > > > MSGÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ...
> > > > >
> > > > > soit 2 messages à la place d'un.
> > > > >
> > > > > -------------------------------
> > > > > Réponse au message :
> > > > > -------------------------------
> > > > >
> > > > > > Salut,
> > > > > > Dans ton appel recv() il faut passer la taille du buffer de reception en 3eme argument, toi tu as utilisé strlen, et comme ton buffer est vide, ca doit retourner 0.
> > > > > > Essaye plutot:
> > > > > > recv(ClientSocket, recvbuffer, sizeof(char[1024]), 0);
> > > > > >
> > > > > >
> > > > > >
> > > >
> > >
> >
>



Cette discussion est classé dans : buffer, char, recv, brol, recvbuffer


Répondre à ce message

Sujets en rapport avec ce message

Question sur les pointeurs [ par Darkneon ] Voici un programme tiree de "Simple C++"#include #include class Court{private: //attributes char * taille chaine de char [ par langedechu ] Salut , voila mon prob (je sais plus comment faire) :j'ai une variable : const char *buffer; et j aimerais savoir le nombre de caractere stocker dans Pb vector de vector de char ! [ par nicolas66 ] Ben g un pti pb avec ce prog en Cpp, à la compile ca passe mé à l'execution ca plante !! si vous savé pk merci d'avance !(c censé initialisé un buffer mon prog plante [ par lcampeur ] Voilà, j'ai un programme qui consiste a envoyer des fichiers quelconques sur des postes référencés précedemment. Je dois pouvoir envoyé plusieurs fich mon prog plante :-( [ par lcampeur ] Voilà, j'ai un programme qui consiste a envoyer des fichiers quelconques sur des postes référencés précedemment. Je dois pouvoir envoyé plusieurs fich Fuite de mémoire pas bien mechante mais suante [ par Trollien ] Bonjour,j'approfondi mais diverses connaissances en c++ et je suis tombé sur un phénomène bien connu et plutôt génant dans une application temps réel. SVP besoin d'aide [ par seito ] [size=5] seito [/size]j'ai déveloper une apploication pour transferer des fichiersla reception est parfaite pourtant à l'envoie ça me cause des tas de strcat enfin pas tout a fait mais presque [ par yserver ] bonjours tout le monde et merci de lir mon poste merci pour toutes vos reponseEn fait le titres est pas tout a fait bon mais c'etait plsu cours le pb char* -> string [ par oRTEEZ ] Voila tout est dans le sujet.En fait j'ai un nom de fichier dans un buffer et j'aimerai ajouter des caractere au nom.ex: *buffer = "voila.jpg"apres tr Buffer sécurisé (pour les pros du C/C++) [ par jockos ] Peux t-on déclarer un buffer sécurisée en C/C++ ?J'entend par buffer sécurisé, un buffer (zone mémoire) alloué réelement en mémoire vive (RAM) et non


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,437 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.