Accueil > Forum > > > > envoi de fichier par socket
envoi de fichier par socket
vendredi 25 juillet 2003 à 22:40:44 |
envoi de fichier par socket

Anacr0x
|
bon vouala, j'ai crée un serveur et un client, tt se passe bien, il parle entre eux et tt et tt. Par contre, quan je veu envoyer un fichier, ca merd ! Je peut envoyer des fichier texte mais pas des exe par exemple (pourtant j'ai ouvert le fichier en binaire). Comment faire ? voici mon code pour l'envoi: char buf2[1024+1]; FILE *FichierEnvoi = fopen(CheminFichier, "rb");
char TailleChar[100]; DWORD Taille=TailleFichier(CheminFichier); /* Une fonction a moi ki renvoi la taille en octet*/ sprintf(TailleChar,"%d",Taille); send(Client,TailleChar,strlen(TailleChar),0);
while(!feof(FichierEnvoi)) { fread(buf2,1024,1,FichierEnvoi); send(Client,buf2,strlen(buf2),0); } fclose(FichierEnvoi);
|
et voici pour la reception : int FichierRecu = open(chaine, _O_CREAT | _O_WRONLY | _O_BINARY, 0755); char buf[1024+1]; memset(buf, 0, sizeof(buf)); recv(Client2, buf, sizeof(buf), 0); /* Pour avoir la taille du fichier */ int taille = atoi(buf); unsigned int n; while(taille > 0) { memset(buf, 0, sizeof(buf)); n = recv(Client2, buf, sizeof(buf), 0); write(FichierRecu, buf, n); taille = taille - n; } close(FichierRecu);
|
_________________________ Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit
|
|
vendredi 25 juillet 2003 à 23:50:49 |
Re : envoi de fichier par socket

aardman
|
Salut, Tu recois le fichier .exe mais quand tu l'execute il ne marche pas ou bien tu ne le recois pas du tout ? ------------------------------- Réponse au message : ------------------------------- > bon vouala, j'ai crée un serveur et un client, tt se passe bien, il parle entre eux et tt et tt. Par contre, quan je veu envoyer un fichier, ca merd ! Je peut envoyer des fichier texte mais pas des exe par exemple (pourtant j'ai ouvert le fichier en binaire). Comment faire ? > > voici mon code pour l'envoi: > > char buf2[1024+1]; > FILE *FichierEnvoi = fopen(CheminFichier, "rb"); > > char TailleChar[100]; > DWORD Taille=TailleFichier(CheminFichier); /* Une fonction a moi ki renvoi la taille en octet*/ > sprintf(TailleChar,"%d",Taille); > send(Client,TailleChar,strlen(TailleChar),0); > > while(!feof(FichierEnvoi)) > { > fread(buf2,1024,1,FichierEnvoi); > send(Client,buf2,strlen(buf2),0); > } > fclose(FichierEnvoi); > |
> > et voici pour la reception : > > int FichierRecu = open(chaine, _O_CREAT | _O_WRONLY | _O_BINARY, 0755); > > char buf[1024+1]; > memset(buf, 0, sizeof(buf)); > > recv(Client2, buf, sizeof(buf), 0); /* Pour avoir la taille du fichier */ > int taille = atoi(buf); > > unsigned int n; > while(taille > 0) > { > memset(buf, 0, sizeof(buf)); > n = recv(Client2, buf, sizeof(buf), 0); > write(FichierRecu, buf, n); > taille = taille - n; > } > close(FichierRecu); > |
> _________________________ > Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit
|
|
samedi 26 juillet 2003 à 00:10:44 |
Re : envoi de fichier par socket

Anacr0x
|
Ben en fait, je recoit une petite partie de l'exe, du genre 2ko et apres, ca a l'air de bloké, alor evidemment, ca marche pas... Par contre, pour un fichier txt ou rtf (meme gros), ca marche trè bien ! _________________________ Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit ------------------------------- Réponse au message : ------------------------------- > Salut, > Tu recois le fichier .exe mais quand tu l'execute il ne marche pas ou bien tu ne le recois pas du tout ? > > > ------------------------------- > Réponse au message : > ------------------------------- > > > bon vouala, j'ai crée un serveur et un client, tt se passe bien, il parle entre eux et tt et tt. Par contre, quan je veu envoyer un fichier, ca merd ! Je peut envoyer des fichier texte mais pas des exe par exemple (pourtant j'ai ouvert le fichier en binaire). Comment faire ? > > > > voici mon code pour l'envoi: > > > > char buf2[1024+1]; > > FILE *FichierEnvoi = fopen(CheminFichier, "rb"); > > > > char TailleChar[100]; > > DWORD Taille=TailleFichier(CheminFichier); /* Une fonction a moi ki renvoi la taille en octet*/ > > sprintf(TailleChar,"%d",Taille); > > send(Client,TailleChar,strlen(TailleChar),0); > > > > while(!feof(FichierEnvoi)) > > { > > fread(buf2,1024,1,FichierEnvoi); > > send(Client,buf2,strlen(buf2),0); > > } > > fclose(FichierEnvoi); > > |
> > > > et voici pour la reception : > > > > int FichierRecu = open(chaine, _O_CREAT | _O_WRONLY | _O_BINARY, 0755); > > > > char buf[1024+1]; > > memset(buf, 0, sizeof(buf)); > > > > recv(Client2, buf, sizeof(buf), 0); /* Pour avoir la taille du fichier */ > > int taille = atoi(buf); > > > > unsigned int n; > > while(taille > 0) > > { > > memset(buf, 0, sizeof(buf)); > > n = recv(Client2, buf, sizeof(buf), 0); > > write(FichierRecu, buf, n); > > taille = taille - n; > > } > > close(FichierRecu); > > |
> > _________________________ > > Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit >
|
|
samedi 26 juillet 2003 à 00:18:31 |
Re : envoi de fichier par socket

aardman
|
Salut, Essaye de remplacer le strlen(buf2) dans send(Client,buf2,strlen(buf2),0); par la valeur que fread retourne. ------------------------------- Réponse au message : ------------------------------- > Ben en fait, je recoit une petite partie de l'exe, du genre 2ko et apres, ca a l'air de bloké, alor evidemment, ca marche pas... Par contre, pour un fichier txt ou rtf (meme gros), ca marche trè bien ! > _________________________ > Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit > > > ------------------------------- > Réponse au message : > ------------------------------- > > > Salut, > > Tu recois le fichier .exe mais quand tu l'execute il ne marche pas ou bien tu ne le recois pas du tout ? > > > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > bon vouala, j'ai crée un serveur et un client, tt se passe bien, il parle entre eux et tt et tt. Par contre, quan je veu envoyer un fichier, ca merd ! Je peut envoyer des fichier texte mais pas des exe par exemple (pourtant j'ai ouvert le fichier en binaire). Comment faire ? > > > > > > voici mon code pour l'envoi: > > > > > > char buf2[1024+1]; > > > FILE *FichierEnvoi = fopen(CheminFichier, "rb"); > > > > > > char TailleChar[100]; > > > DWORD Taille=TailleFichier(CheminFichier); /* Une fonction a moi ki renvoi la taille en octet*/ > > > sprintf(TailleChar,"%d",Taille); > > > send(Client,TailleChar,strlen(TailleChar),0); > > > > > > while(!feof(FichierEnvoi)) > > > { > > > fread(buf2,1024,1,FichierEnvoi); > > > send(Client,buf2,strlen(buf2),0); > > > } > > > fclose(FichierEnvoi); > > > |
> > > > > > et voici pour la reception : > > > > > > int FichierRecu = open(chaine, _O_CREAT | _O_WRONLY | _O_BINARY, 0755); > > > > > > char buf[1024+1]; > > > memset(buf, 0, sizeof(buf)); > > > > > > recv(Client2, buf, sizeof(buf), 0); /* Pour avoir la taille du fichier */ > > > int taille = atoi(buf); > > > > > > unsigned int n; > > > while(taille > 0) > > > { > > > memset(buf, 0, sizeof(buf)); > > > n = recv(Client2, buf, sizeof(buf), 0); > > > write(FichierRecu, buf, n); > > > taille = taille - n; > > > } > > > close(FichierRecu); > > > |
> > > _________________________ > > > Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit > > >
|
|
samedi 26 juillet 2003 à 00:24:29 |
Re : envoi de fichier par socket

Anacr0x
|
nan, ca ne marche pas, au contraire, c encore pire, meme les fichier txt ne marche plus (^_^) _________________________ Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit ------------------------------- Réponse au message : ------------------------------- > Salut, > Essaye de remplacer le strlen(buf2) dans > send(Client,buf2,strlen(buf2),0); > par la valeur que fread retourne. > > > ------------------------------- > Réponse au message : > ------------------------------- > > > Ben en fait, je recoit une petite partie de l'exe, du genre 2ko et apres, ca a l'air de bloké, alor evidemment, ca marche pas... Par contre, pour un fichier txt ou rtf (meme gros), ca marche trè bien ! > > _________________________ > > Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit > > > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > Salut, > > > Tu recois le fichier .exe mais quand tu l'execute il ne marche pas ou bien tu ne le recois pas du tout ? > > > > > > > > > ------------------------------- > > > Réponse au message : > > > ------------------------------- > > > > > > > bon vouala, j'ai crée un serveur et un client, tt se passe bien, il parle entre eux et tt et tt. Par contre, quan je veu envoyer un fichier, ca merd ! Je peut envoyer des fichier texte mais pas des exe par exemple (pourtant j'ai ouvert le fichier en binaire). Comment faire ? > > > > > > > > voici mon code pour l'envoi: > > > > > > > > char buf2[1024+1]; > > > > FILE *FichierEnvoi = fopen(CheminFichier, "rb"); > > > > > > > > char TailleChar[100]; > > > > DWORD Taille=TailleFichier(CheminFichier); /* Une fonction a moi ki renvoi la taille en octet*/ > > > > sprintf(TailleChar,"%d",Taille); > > > > send(Client,TailleChar,strlen(TailleChar),0); > > > > > > > > while(!feof(FichierEnvoi)) > > > > { > > > > fread(buf2,1024,1,FichierEnvoi); > > > > send(Client,buf2,strlen(buf2),0); > > > > } > > > > fclose(FichierEnvoi); > > > > |
> > > > > > > > et voici pour la reception : > > > > > > > > int FichierRecu = open(chaine, _O_CREAT | _O_WRONLY | _O_BINARY, 0755); > > > > > > > > char buf[1024+1]; > > > > memset(buf, 0, sizeof(buf)); > > > > > > > > recv(Client2, buf, sizeof(buf), 0); /* Pour avoir la taille du fichier */ > > > > int taille = atoi(buf); > > > > > > > > unsigned int n; > > > > while(taille > 0) > > > > { > > > > memset(buf, 0, sizeof(buf)); > > > > n = recv(Client2, buf, sizeof(buf), 0); > > > > write(FichierRecu, buf, n); > > > > taille = taille - n; > > > > } > > > > close(FichierRecu); > > > > |
> > > > _________________________ > > > > Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit > > > > > >
|
|
samedi 26 juillet 2003 à 00:34:14 |
Re : envoi de fichier par socket

aardman
|
Salut, Moi ce que je vois c'est que tu as un buffer de 1024 octets et que tu envoie les octets 1 par 1 grace a ce buffer. J'imagine que c'est pas ce que tu voulais faire (ou alors tu as vraiment peur des overflows :p) Met 1 a la place du strlen(buf2) alors. Il faut le virer ce strlen, c'est reservé pour lire la taille des chaines de caracteres terminées par null, pas pour les buffers. ------------------------------- Réponse au message : ------------------------------- > nan, ca ne marche pas, au contraire, c encore pire, meme les fichier txt ne marche plus (^_^) > _________________________ > Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit > > > ------------------------------- > Réponse au message : > ------------------------------- > > > Salut, > > Essaye de remplacer le strlen(buf2) dans > > send(Client,buf2,strlen(buf2),0); > > par la valeur que fread retourne. > > > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > Ben en fait, je recoit une petite partie de l'exe, du genre 2ko et apres, ca a l'air de bloké, alor evidemment, ca marche pas... Par contre, pour un fichier txt ou rtf (meme gros), ca marche trè bien ! > > > _________________________ > > > Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit > > > > > > > > > ------------------------------- > > > Réponse au message : > > > ------------------------------- > > > > > > > Salut, > > > > Tu recois le fichier .exe mais quand tu l'execute il ne marche pas ou bien tu ne le recois pas du tout ? > > > > > > > > > > > > ------------------------------- > > > > Réponse au message : > > > > ------------------------------- > > > > > > > > > bon vouala, j'ai crée un serveur et un client, tt se passe bien, il parle entre eux et tt et tt. Par contre, quan je veu envoyer un fichier, ca merd ! Je peut envoyer des fichier texte mais pas des exe par exemple (pourtant j'ai ouvert le fichier en binaire). Comment faire ? > > > > > > > > > > voici mon code pour l'envoi: > > > > > > > > > > char buf2[1024+1]; > > > > > FILE *FichierEnvoi = fopen(CheminFichier, "rb"); > > > > > > > > > > char TailleChar[100]; > > > > > DWORD Taille=TailleFichier(CheminFichier); /* Une fonction a moi ki renvoi la taille en octet*/ > > > > > sprintf(TailleChar,"%d",Taille); > > > > > send(Client,TailleChar,strlen(TailleChar),0); > > > > > > > > > > while(!feof(FichierEnvoi)) > > > > > { > > > > > fread(buf2,1024,1,FichierEnvoi); > > > > > send(Client,buf2,strlen(buf2),0); > > > > > } > > > > > fclose(FichierEnvoi); > > > > > |
> > > > > > > > > > et voici pour la reception : > > > > > > > > > > int FichierRecu = open(chaine, _O_CREAT | _O_WRONLY | _O_BINARY, 0755); > > > > > > > > > > char buf[1024+1]; > > > > > memset(buf, 0, sizeof(buf)); > > > > > > > > > > recv(Client2, buf, sizeof(buf), 0); /* Pour avoir la taille du fichier */ > > > > > int taille = atoi(buf); > > > > > > > > > > unsigned int n; > > > > > while(taille > 0) > > > > > { > > > > > memset(buf, 0, sizeof(buf)); > > > > > n = recv(Client2, buf, sizeof(buf), 0); > > > > > write(FichierRecu, buf, n); > > > > > taille = taille - n; > > > > > } > > > > > close(FichierRecu); > > > > > |
> > > > > _________________________ > > > > > Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit > > > > > > > > > >
|
|
samedi 26 juillet 2003 à 00:39:09 |
Re : envoi de fichier par socket

aardman
|
Arf attend c'est moi qui me suis trompé, j'ai confondu avec read. Y'a aucun moyen de savoir le nombre exact d'octets ecrits dans buf2 par fread ? ------------------------------- Réponse au message : ------------------------------- > Salut, > Moi ce que je vois c'est que tu as un buffer de 1024 octets et que tu envoie les octets 1 par 1 grace a ce buffer. J'imagine que c'est pas ce que tu voulais faire (ou alors tu as vraiment peur des overflows :p) > > Met 1 a la place du strlen(buf2) alors. Il faut le virer ce strlen, c'est reservé pour lire la taille des chaines de caracteres terminées par null, pas pour les buffers. > > > > ------------------------------- > Réponse au message : > ------------------------------- > > > nan, ca ne marche pas, au contraire, c encore pire, meme les fichier txt ne marche plus (^_^) > > _________________________ > > Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit > > > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > Salut, > > > Essaye de remplacer le strlen(buf2) dans > > > send(Client,buf2,strlen(buf2),0); > > > par la valeur que fread retourne. > > > > > > > > > ------------------------------- > > > Réponse au message : > > > ------------------------------- > > > > > > > Ben en fait, je recoit une petite partie de l'exe, du genre 2ko et apres, ca a l'air de bloké, alor evidemment, ca marche pas... Par contre, pour un fichier txt ou rtf (meme gros), ca marche trè bien ! > > > > _________________________ > > > > Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit > > > > > > > > > > > > ------------------------------- > > > > Réponse au message : > > > > ------------------------------- > > > > > > > > > Salut, > > > > > Tu recois le fichier .exe mais quand tu l'execute il ne marche pas ou bien tu ne le recois pas du tout ? > > > > > > > > > > > > > > > ------------------------------- > > > > > Réponse au message : > > > > > ------------------------------- > > > > > > > > > > > bon vouala, j'ai crée un serveur et un client, tt se passe bien, il parle entre eux et tt et tt. Par contre, quan je veu envoyer un fichier, ca merd ! Je peut envoyer des fichier texte mais pas des exe par exemple (pourtant j'ai ouvert le fichier en binaire). Comment faire ? > > > > > > > > > > > > voici mon code pour l'envoi: > > > > > > > > > > > > char buf2[1024+1]; > > > > > > FILE *FichierEnvoi = fopen(CheminFichier, "rb"); > > > > > > > > > > > > char TailleChar[100]; > > > > > > DWORD Taille=TailleFichier(CheminFichier); /* Une fonction a moi ki renvoi la taille en octet*/ > > > > > > sprintf(TailleChar,"%d",Taille); > > > > > > send(Client,TailleChar,strlen(TailleChar),0); > > > > > > > > > > > > while(!feof(FichierEnvoi)) > > > > > > { > > > > > > fread(buf2,1024,1,FichierEnvoi); > > > > > > send(Client,buf2,strlen(buf2),0); > > > > > > } > > > > > > fclose(FichierEnvoi); > > > > > > |
> > > > > > > > > > > > et voici pour la reception : > > > > > > > > > > > > int FichierRecu = open(chaine, _O_CREAT | _O_WRONLY | _O_BINARY, 0755); > > > > > > > > > > > > char buf[1024+1]; > > > > > > memset(buf, 0, sizeof(buf)); > > > > > > > > > > > > recv(Client2, buf, sizeof(buf), 0); /* Pour avoir la taille du fichier */ > > > > > > int taille = atoi(buf); > > > > > > > > > > > > unsigned int n; > > > > > > while(taille > 0) > > > > > > { > > > > > > memset(buf, 0, sizeof(buf)); > > > > > > n = recv(Client2, buf, sizeof(buf), 0); > > > > > > write(FichierRecu, buf, n); > > > > > > taille = taille - n; > > > > > > } > > > > > > close(FichierRecu); > > > > > > |
> > > > > > _________________________ > > > > > > Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit > > > > > > > > > > > > > > >
|
|
samedi 26 juillet 2003 à 00:46:02 |
Re : envoi de fichier par socket

Anacr0x
|
Tu as raison, c'est bien les strlen ki merdait !!!! J'ai mi 1024 a la place (et pas 1), et ca marche nikel ! Merci !!!!!!!!! (^_^) _________________________ Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit ------------------------------- Réponse au message : ------------------------------- > Salut, > Moi ce que je vois c'est que tu as un buffer de 1024 octets et que tu envoie les octets 1 par 1 grace a ce buffer. J'imagine que c'est pas ce que tu voulais faire (ou alors tu as vraiment peur des overflows :p) > > Met 1 a la place du strlen(buf2) alors. Il faut le virer ce strlen, c'est reservé pour lire la taille des chaines de caracteres terminées par null, pas pour les buffers. > > > > ------------------------------- > Réponse au message : > ------------------------------- > > > nan, ca ne marche pas, au contraire, c encore pire, meme les fichier txt ne marche plus (^_^) > > _________________________ > > Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit > > > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > Salut, > > > Essaye de remplacer le strlen(buf2) dans > > > send(Client,buf2,strlen(buf2),0); > > > par la valeur que fread retourne. > > > > > > > > > ------------------------------- > > > Réponse au message : > > > ------------------------------- > > > > > > > Ben en fait, je recoit une petite partie de l'exe, du genre 2ko et apres, ca a l'air de bloké, alor evidemment, ca marche pas... Par contre, pour un fichier txt ou rtf (meme gros), ca marche trè bien ! > > > > _________________________ > > > > Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit > > > > > > > > > > > > ------------------------------- > > > > Réponse au message : > > > > ------------------------------- > > > > > > > > > Salut, > > > > > Tu recois le fichier .exe mais quand tu l'execute il ne marche pas ou bien tu ne le recois pas du tout ? > > > > > > > > > > > > > > > ------------------------------- > > > > > Réponse au message : > > > > > ------------------------------- > > > > > > > > > > > bon vouala, j'ai crée un serveur et un client, tt se passe bien, il parle entre eux et tt et tt. Par contre, quan je veu envoyer un fichier, ca merd ! Je peut envoyer des fichier texte mais pas des exe par exemple (pourtant j'ai ouvert le fichier en binaire). Comment faire ? > > > > > > > > > > > > voici mon code pour l'envoi: > > > > > > > > > > > > char buf2[1024+1]; > > > > > > FILE *FichierEnvoi = fopen(CheminFichier, "rb"); > > > > > > > > > > > > char TailleChar[100]; > > > > > > DWORD Taille=TailleFichier(CheminFichier); /* Une fonction a moi ki renvoi la taille en octet*/ > > > > > > sprintf(TailleChar,"%d",Taille); > > > > > > send(Client,TailleChar,strlen(TailleChar),0); > > > > > > > > > > > > while(!feof(FichierEnvoi)) > > > > > > { > > > > > > fread(buf2,1024,1,FichierEnvoi); > > > > > > send(Client,buf2,strlen(buf2),0); > > > > > > } > > > > > > fclose(FichierEnvoi); > > > > > > |
> > > > > > > > > > > > et voici pour la reception : > > > > > > > > > > > > int FichierRecu = open(chaine, _O_CREAT | _O_WRONLY | _O_BINARY, 0755); > > > > > > > > > > > > char buf[1024+1]; > > > > > > memset(buf, 0, sizeof(buf)); > > > > > > > > > > > > recv(Client2, buf, sizeof(buf), 0); /* Pour avoir la taille du fichier */ > > > > > > int taille = atoi(buf); > > > > > > > > > > > > unsigned int n; > > > > > > while(taille > 0) > > > > > > { > > > > > > memset(buf, 0, sizeof(buf)); > > > > > > n = recv(Client2, buf, sizeof(buf), 0); > > > > > > write(FichierRecu, buf, n); > > > > > > taille = taille - n; > > > > > > } > > > > > > close(FichierRecu); > > > > > > |
> > > > > > _________________________ > > > > > > Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit > > > > > > > > > > > > > > >
|
|
samedi 26 juillet 2003 à 00:52:49 |
Re : envoi de fichier par socket

aardman
|
cool :) ------------------------------- Réponse au message : ------------------------------- > Tu as raison, c'est bien les strlen ki merdait !!!! J'ai mi 1024 a la place (et pas 1), et ca marche nikel ! Merci !!!!!!!!! (^_^) > _________________________ > Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit > > > ------------------------------- > Réponse au message : > ------------------------------- > > > Salut, > > Moi ce que je vois c'est que tu as un buffer de 1024 octets et que tu envoie les octets 1 par 1 grace a ce buffer. J'imagine que c'est pas ce que tu voulais faire (ou alors tu as vraiment peur des overflows :p) > > > > Met 1 a la place du strlen(buf2) alors. Il faut le virer ce strlen, c'est reservé pour lire la taille des chaines de caracteres terminées par null, pas pour les buffers. > > > > > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > nan, ca ne marche pas, au contraire, c encore pire, meme les fichier txt ne marche plus (^_^) > > > _________________________ > > > Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit > > > > > > > > > ------------------------------- > > > Réponse au message : > > > ------------------------------- > > > > > > > Salut, > > > > Essaye de remplacer le strlen(buf2) dans > > > > send(Client,buf2,strlen(buf2),0); > > > > par la valeur que fread retourne. > > > > > > > > > > > > ------------------------------- > > > > Réponse au message : > > > > ------------------------------- > > > > > > > > > Ben en fait, je recoit une petite partie de l'exe, du genre 2ko et apres, ca a l'air de bloké, alor evidemment, ca marche pas... Par contre, pour un fichier txt ou rtf (meme gros), ca marche trè bien ! > > > > > _________________________ > > > > > Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit > > > > > > > > > > > > > > > ------------------------------- > > > > > Réponse au message : > > > > > ------------------------------- > > > > > > > > > > > Salut, > > > > > > Tu recois le fichier .exe mais quand tu l'execute il ne marche pas ou bien tu ne le recois pas du tout ? > > > > > > > > > > > > > > > > > > ------------------------------- > > > > > > Réponse au message : > > > > > > ------------------------------- > > > > > > > > > > > > > bon vouala, j'ai crée un serveur et un client, tt se passe bien, il parle entre eux et tt et tt. Par contre, quan je veu envoyer un fichier, ca merd ! Je peut envoyer des fichier texte mais pas des exe par exemple (pourtant j'ai ouvert le fichier en binaire). Comment faire ? > > > > > > > > > > > > > > voici mon code pour l'envoi: > > > > > > > > > > > > > > char buf2[1024+1]; > > > > > > > FILE *FichierEnvoi = fopen(CheminFichier, "rb"); > > > > > > > > > > > > > > char TailleChar[100]; > > > > > > > DWORD Taille=TailleFichier(CheminFichier); /* Une fonction a moi ki renvoi la taille en octet*/ > > > > > > > sprintf(TailleChar,"%d",Taille); > > > > > > > send(Client,TailleChar,strlen(TailleChar),0); > > > > > > > > > > > > > > while(!feof(FichierEnvoi)) > > > > > > > { > > > > > > > fread(buf2,1024,1,FichierEnvoi); > > > > > > > send(Client,buf2,strlen(buf2),0); > > > > > > > } > > > > > > > fclose(FichierEnvoi); > > > > > > > |
> > > > > > > > > > > > > > et voici pour la reception : > > > > > > > > > > > > > > int FichierRecu = open(chaine, _O_CREAT | _O_WRONLY | _O_BINARY, 0755); > > > > > > > > > > > > > > char buf[1024+1]; > > > > > > > memset(buf, 0, sizeof(buf)); > > > > > > > > > > > > > > recv(Client2, buf, sizeof(buf), 0); /* Pour avoir la taille du fichier */ > > > > > > > int taille = atoi(buf); > > > > > > > > > > > > > > unsigned int n; > > > > > > > while(taille > 0) > > > > > > > { > > > > > > > memset(buf, 0, sizeof(buf)); > > > > > > > n = recv(Client2, buf, sizeof(buf), 0); > > > > > > > write(FichierRecu, buf, n); > > > > > > > taille = taille - n; > > > > > > > } > > > > > > > close(FichierRecu); > > > > > > > |
> > > > > > > _________________________ > > > > > > > Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit > > > > > > > > > > > > > > > > > > > > >
|
|
samedi 26 juillet 2003 à 01:13:10 |
Re : envoi de fichier par socket

Anacr0x
|
Ne t'inkiete pas pour ca, le fait de ne pas savoir combien d'octet ya exactement dans le buffer ne fait qu'arrondir la taille de mon fichier au Ko supérieur, ce n'est vraiment pas trè important et le fichier marche toujour donc.... _________________________ Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit ------------------------------- Réponse au message : ------------------------------- > Arf attend c'est moi qui me suis trompé, j'ai confondu avec read. > Y'a aucun moyen de savoir le nombre exact d'octets ecrits dans buf2 par fread ? > > > > ------------------------------- > Réponse au message : > ------------------------------- > > > Salut, > > Moi ce que je vois c'est que tu as un buffer de 1024 octets et que tu envoie les octets 1 par 1 grace a ce buffer. J'imagine que c'est pas ce que tu voulais faire (ou alors tu as vraiment peur des overflows :p) > > > > Met 1 a la place du strlen(buf2) alors. Il faut le virer ce strlen, c'est reservé pour lire la taille des chaines de caracteres terminées par null, pas pour les buffers. > > > > > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > nan, ca ne marche pas, au contraire, c encore pire, meme les fichier txt ne marche plus (^_^) > > > _________________________ > > > Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit > > > > > > > > > ------------------------------- > > > Réponse au message : > > > ------------------------------- > > > > > > > Salut, > > > > Essaye de remplacer le strlen(buf2) dans > > > > send(Client,buf2,strlen(buf2),0); > > > > par la valeur que fread retourne. > > > > > > > > > > > > ------------------------------- > > > > Réponse au message : > > > > ------------------------------- > > > > > > > > > Ben en fait, je recoit une petite partie de l'exe, du genre 2ko et apres, ca a l'air de bloké, alor evidemment, ca marche pas... Par contre, pour un fichier txt ou rtf (meme gros), ca marche trè bien ! > > > > > _________________________ > > > > > Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit > > > > > > > > > > > > > > > ------------------------------- > > > > > Réponse au message : > > > > > ------------------------------- > > > > > > > > > > > Salut, > > > > > > Tu recois le fichier .exe mais quand tu l'execute il ne marche pas ou bien tu ne le recois pas du tout ? > > > > > > > > > > > > > > > > > > ------------------------------- > > > > > > Réponse au message : > > > > > > ------------------------------- > > > > > > > > > > > > > bon vouala, j'ai crée un serveur et un client, tt se passe bien, il parle entre eux et tt et tt. Par contre, quan je veu envoyer un fichier, ca merd ! Je peut envoyer des fichier texte mais pas des exe par exemple (pourtant j'ai ouvert le fichier en binaire). Comment faire ? > > > > > > > > > > > > > > voici mon code pour l'envoi: > > > > > > > > > > > > > > char buf2[1024+1]; > > > > > > > FILE *FichierEnvoi = fopen(CheminFichier, "rb"); > > > > > > > > > > > > > > char TailleChar[100]; > > > > > > > DWORD Taille=TailleFichier(CheminFichier); /* Une fonction a moi ki renvoi la taille en octet*/ > > > > > > > sprintf(TailleChar,"%d",Taille); > > > > > > > send(Client,TailleChar,strlen(TailleChar),0); > > > > > > > > > > > > > > while(!feof(FichierEnvoi)) > > > > > > > { > > > > > > > fread(buf2,1024,1,FichierEnvoi); > > > > > > > send(Client,buf2,strlen(buf2),0); > > > > > > > } > > > > > > > fclose(FichierEnvoi); > > > > > > > |
> > > > > > > > > > > > > > et voici pour la reception : > > > > > > > > > > > > > > int FichierRecu = open(chaine, _O_CREAT | _O_WRONLY | _O_BINARY, 0755); > > > > > > > > > > > > > > char buf[1024+1]; > > > > > > > memset(buf, 0, sizeof(buf)); > > > > > > > > > > > > > > recv(Client2, buf, sizeof(buf), 0); /* Pour avoir la taille du fichier */ > > > > > > > int taille = atoi(buf); > > > > > > > > > > > > > > unsigned int n; > > > > > > > while(taille > 0) > > > > > > > { > > > > > > > memset(buf, 0, sizeof(buf)); > > > > > > > n = recv(Client2, buf, sizeof(buf), 0); > > > > > > > write(FichierRecu, buf, n); > > > > > > > taille = taille - n; > > > > > > > } > > > > > > > close(FichierRecu); > > > > > > > |
> > > > > > > _________________________ > > > > > > > Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit > > > > > > > > > > > > > > > > > > > > >
|
|
Cette discussion est classée dans : fichier, taille, code, buf, buf2
Répondre à ce message
Sujets en rapport avec ce message
Fichier txt => edit box [ par Wiwi ]
Salut tt le monde, bon voilà je vous explique.Je veux afficher le contenu d'un fichier texte dans une edit box.Le problème est que ce fichier contient
Corrigez mon code? Comment récupérer la taille d'un fichier? [ par supergrey ]
Bonjour j'utilise pour l'instant la fonction suivante pour récupérer la taille d'un fichier: DWORD TailleFichier(char* str_NomFichier){ HANDLE hFi
Malloc et mémoire affectée [ par Chop_chop ]
Bonjour,J'ai un petit soucis quant à l'allocation de mémoire pour un char* avec l'utilisation de malloc.Voici mon code (bien allégé) :[CODE] char *fic
taille fichier [ par dacor ]
bonjour,comment peut on récupéré la taille d'un fichier ?merci
Aide [ par rubaruba ]
Bonjour les amisJe ne suis qu'un poussin dans le langage C, et vous soumets ce petit code que je na sais ni compiler ni exécuter: /* Affiche un messag
Fichier TXT dans textbox [ par nerone21 ]
Bonjour a tt les codeurs...Lors voila mon probleme, je code avec visual C++ 2005 express et quel fut mon desarroi lorsque je me suis appercu ke nos ch
Parcours de fichier [ par mmx1 ]
Bonjour, j'ai un petit code qui prend en paramètre un fichier txt et qui créer un fichier du même nom mais en .rawje voudrais ne plus utiliser ces par
scrollbar ....!! [ par aabdoos ]
salut a tout le groupe :)bon voila......j'ai cree une application MFC que ,la taillede son cadre(Dialog) depace la taille de mon ecrant, car il y en a
lecture fichier [c++ builder] [ par SaXo360 ]
Bonjour, je lis dans un fichier des noms séparé par ce caractèere ';' et je devrait afficher ces noms dans mon combobox mais cane veut pas pourtant je
surcharge delete [ par koala01 ]
Salut, Je m'adresse à vous car je suis confronté à un problème qui me fait perdre mon latin... Je souhaites créer un "gestionnaire de mémoire" dans l
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|