Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2697 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Transmitfile

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Transmitfile

n°1071289
masseur
Posté le 04-05-2005 à 09:24:55  profilanswer
 

Salut.
J'utilise un Transmitfile dans le code de mon serveur.
Comment mon programme client doit il gérer la réception du fichier?
Dans mon programme serveur je fait ceci

Code :
  1. HANDLE hFind;
  2. WIN32_FIND_DATA FindData;
  3. // Début de la recherche
  4. hFind=FindFirstFile ("1.bmp", &FindData);
  5.   if (hFind!=INVALID_HANDLE_VALUE)
  6. {
  7. // Si le fichier trouvé n'est pas un dossier mais bien un fichier, on affiche son nom
  8. if (!(FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
  9. {
  10. MessageBox (NULL, FindData.cFileName, "Fichier", MB_ICONINFORMATION);
  11. }


 
Une messagebox s'affiche bien avec marqué 1.bmp car ce fichier se trouve dans mon répertoire
 
Cependant quand j'écris ceci  

Code :
  1. int a = TransmitFile(csock,hFind,0,0,NULL,NULL,TF_DISCONNECT);


Le a vaut toujours 0.
Comment cela se fait?
 
 
Merci d'avance

mood
Publicité
Posté le 04-05-2005 à 09:24:55  profilanswer
 

n°1071377
HelloWorld
Salut tout le monde!
Posté le 04-05-2005 à 10:24:33  profilanswer
 

La doc te dit d'appeler WSAGetLastError pour avoir plus d'infos sur l'erreur.
Si tu lis attentivement la doc, FindFirstFile te renvoie un search handle. TransmitFile attend un handle de fichier.
Donc il manque un CreateFile.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1071963
masseur
Posté le 04-05-2005 à 15:40:45  profilanswer
 

Merci.
Sinon sur le site de msdn ils mettent ceci Server  Requires Windows Server 2003, Windows 2000 Server, or Windows NT Server 3.51 and later.
Cela veux dire qu'on ne peux pas creer de serveur avec transmitfile sous xp ou est ce une erreur?

n°1071979
HelloWorld
Salut tout le monde!
Posté le 04-05-2005 à 15:49:46  profilanswer
 

XP n'existe pas en version server il me semble.
Juste au dessus, dans client, ils te citent XP. De toute sfaçons si c'est dans 2000 c'est dans XP.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1072020
masseur
Posté le 04-05-2005 à 16:09:27  profilanswer
 

Merci.
Cependant je fait ceci.

Code :
  1. HANDLE file;
  2. file = CreateFile(szfile, GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, 0);
  3. int a = TransmitFile(csock,file,0,0,NULL,NULL,TF_DISCONNECT);


file ne me renvoit pas d'erreur mais cependant a=0 toujours.
Quelqu'un saurait pourquoi?
Merci

n°1072046
HelloWorld
Salut tout le monde!
Posté le 04-05-2005 à 16:17:40  profilanswer
 

GENERIC_WRITE c'est pour l'écriture. Tu dois lui filer un fichier à lire.

Code :
  1. bool SendFile( const SOCKET & Sock, const char * FileName )
  2. {
  3.     HANDLE hFile = CreateFile(
  4.         FileName,
  5.         GENERIC_READ,
  6.         FILE_SHARE_READ,
  7.         NULL,
  8.         OPEN_EXISTING,
  9.         FILE_FLAG_SEQUENTIAL_SCAN,
  10.         NULL );
  11.     if ( hFile == INVALID_HANDLE_VALUE )
  12.     {
  13.         cerr << "Erreur d'ouverture du fichier\n";
  14.         return false;
  15.     }
  16.     BOOL ok = TransmitFile(
  17.         Sock,
  18.         hFile,
  19.         0,
  20.         0,
  21.         NULL,
  22.         NULL,
  23.         0 ); 
  24.     if ( !ok )
  25.     {
  26.         cerr << "Erreur TransmitFile\n";
  27.     }
  28.     CloseHandle( hFile );
  29. }


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1072119
masseur
Posté le 04-05-2005 à 16:49:22  profilanswer
 

Bon maintenant le ok renvoie bien 1.
Comment gérer le client maintenant?
Une fois qu'il s'est connecté au serveur que dois je faire pour que le fichier transféré se retrouve dans le répertoire de mon code serveur?
J'ai commencé par faire creer le fichier sur le disque

Code :
  1. char *FileName = "d:\\webcam.ini";
  2.        HANDLE hFile = CreateFile(
  3.          FileName,
  4.          GENERIC_WRITE,
  5.          FILE_SHARE_WRITE,
  6.          NULL,
  7.          CREATE_NEW,
  8.          FILE_FLAG_SEQUENTIAL_SCAN,
  9.          NULL );
  10.      if ( hFile == INVALID_HANDLE_VALUE )
  11.      {
  12.          Application->MessageBox("erreur création fichier","Info",MB_OK);
  13.      }


 
Que faire après pour stocker les données dans le fichier?
Un bon vieux recv?
Y a rien de mieux adapté?
Merci


Message édité par masseur le 04-05-2005 à 16:49:56
n°1072340
HelloWorld
Salut tout le monde!
Posté le 04-05-2005 à 19:42:23  profilanswer
 

Ben tu te connecte au server, tu récupères les données et les écrit dans le fichier. Du côté client, TransmitFile ça change rien.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1072355
masseur
Posté le 04-05-2005 à 19:57:31  profilanswer
 

Si je résumé dans le serveur je fait le transmitfile et dans le client je fait plusieurs receive et je l'ecrit dans le fichier par writefile?


Message édité par masseur le 04-05-2005 à 19:58:00

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Transmitfile

 

Sujets relatifs
[Visual C++] TransmitFile(); -> Récupérer le fichier envoyé[C++] TransmitFile();
Plus de sujets relatifs à : Transmitfile


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)