Transfert de fichiers

anonyme_man_in_this_world Messages postés 161 Date d'inscription samedi 25 juin 2005 Statut Membre Dernière intervention 1 août 2006 - Modifié le 6 janv. 2006 à 14:24
anonyme_man_in_this_world Messages postés 161 Date d'inscription samedi 25 juin 2005 Statut Membre Dernière intervention 1 août 2006 - 6 janv. 2006 à 14:24
salut !

recemment ,j'ai testé le programme que j'ai deposé sur le

site avec deux de mes amis et ça n'a pas l'air de

fonctionner ,pourtant lorsque je teste sur mon pc tout

fonctionne bien ,voila mon code :
/*************************************/
// client :


#include <winsock.h>
#include <stdio.h>
#pragma comment(lib, "wsock32.lib")


int main()
{
 char buffer[8000] ;
 char nomfichier[30] ;


 printf("fichier : ") ;
 scanf("%s",nomfichier) ;      //fichier.txt
 FILE* file = fopen(nomfichier,       //ouverture en lecture seule en mode txt
  "rb") ;
 if(file == NULL)
 {
  printf("erreur lors l'ouverture du fichier\n") ;
  exit(-1) ;
 }


 WSADATA WSAData;
 WSAStartup(MAKEWORD(1,0), &WSAData);
 SOCKET sock;
 printf("Ip : ") ;
 scanf("%s",buffer) ;
 SOCKADDR_IN sin;
    sock = socket(AF_INET, SOCK_STREAM, 0);
 
      // les proprietes du socket du server
 sin.sin_addr.s_addr = inet_addr(buffer);
 sin.sin_family     = AF_INET;
 sin.sin_port     = htons(4444);
 if(connect(sock, (SOCKADDR *)&sin, sizeof(sin)) == INVALID_SOCKET)
 {
  printf("la connection a echou&#233;\n") ;
  getchar() ;
  return 1 ;
 }
 printf("connection etablie\n") ;
 send(sock,nomfichier,30,0) ;
 recv(sock,nomfichier,30,0) ;
 int SizeReaded = 1 ;
 long SizeSended = 1 ;
 printf("transfert des donn&#233;es en cours...\n") ;
 
 while(SizeReaded>0 && SizeSended>0)
 {
  SizeReaded = fread(buffer,1,8000,file) ;
  SizeSended = send(sock,buffer,SizeReaded,0) ; 
 }
 
 fclose(file) ; // fermeture du fichier 
 closesocket(sock) ;
 WSACleanup() ;
 printf("fichier bien envoye\n") ;
 printf("appuyer sur une touche pour sortir ...") ;
 getchar() ;
 getchar() ;
 return 1;
}
/***********************************/
// server 

#include <stdio.h>    // printf
#include <winsock.h>
#pragma comment(lib, "wsock32.lib")


int main()
{
 char buffer[8000] ;
 char nomfichier[30] ;
    memset(nomfichier,0,30) ;
 printf("veuillez attendre que le client se connecte ...\n") ;


 WSADATA WSAData;
 WSAStartup(MAKEWORD(1,0), &WSAData);
    
 SOCKET sock;
 SOCKET csock = INVALID_SOCKET;
 SOCKADDR_IN sin;
 sock = socket(AF_INET, SOCK_STREAM, 0);


 sin.sin_addr.s_addr = INADDR_ANY;
 sin.sin_family     = AF_INET;
 sin.sin_port     = htons(4444);


 bind(sock, (SOCKADDR *)&sin, sizeof(sin));
 listen(sock, 1);
 int a = sizeof(sin) ;
 while(csock == INVALID_SOCKET)
 {
  csock = accept(sock,(SOCKADDR*)&sin,&a) ;
 }
 printf("connection etablie\n") ;
    recv(csock,nomfichier,30,0) ;
 send(csock,nomfichier,30,0) ;
 FILE*file = fopen(nomfichier,"wb") ;
    if(file == NULL)
 {
  printf("erreur lors l'ouverture du fichier\n") ;
  exit(-1) ;
 }
 long SizeRecv = 1 ;
 int SizeWrited = 1 ;
 printf("reception des donnees ...\n") ;


 while(SizeRecv>0 && SizeWrited>0)
 {
  SizeRecv = recv(csock,buffer,8000,0) ;  //reception des donnees
  SizeWrited = fwrite(buffer,1,SizeRecv,file); //ecriture du buffer
 }
 fclose(file) ;// fermeture du fichier
 printf("fermeture du fichier \n") ;
 closesocket(sock) ;
 WSACleanup() ;
 printf("transfert termin&#233; fichier bien recu \n") ;
 printf("appuyer sur une touche pour sortir ...") ;
 getchar() ;
 return 1;
}
/****************************/


merçi d'avance

3 réponses

cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012
6 janv. 2006 à 09:22
Tu pourrais peut-être préciser un peu plus le problème au lieu de donner le code de ton programme.

@+
Arnotic,
Admin CS,
http://dev.winsysdev.com
MVP Visual C++
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
6 janv. 2006 à 10:15
Le problème c'est que ça ne marche qu'en Local :)
if(!Meilleur("Joky")) return ERREUR;<
0
anonyme_man_in_this_world Messages postés 161 Date d'inscription samedi 25 juin 2005 Statut Membre Dernière intervention 1 août 2006
6 janv. 2006 à 14:24
wé ,c 'est ça ! le probleme c'est que ça ne marche qu'en Local !


lorsque j' execute les deux programmes sur mon pc, tout marche bien ,meme si je

valide l'ip internet . Mais lorsque je l'ai testé avec un de mes amis il n'a pas marché !!

merçi d'avance
0
Rejoignez-nous