|
Trouver une ressource
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)
Informations & options pour cette discussion
|
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
|
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
|
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
|
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
|
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
|
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
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|