begin process at 2012 05 28 21:27:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Réseau / Internet

 > 

envoi de fichier par socket


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Membre Club
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

Membre Club
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

Membre Club
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

Membre Club
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

Membre Club
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
> > > > > >
> > > > >
> > > >
> > >
> >
>

1 2

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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales