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

  FORUM HardWare.fr
  Programmation
  C

  probleme du transfert d'un fichier

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme du transfert d'un fichier

n°1278699
adm1n1s7ra​7eur
Posté le 07-01-2006 à 14:12:23  profilanswer
 

salut  !!
 
j'aurai aimé que quelqun m'aide à tester ma source parceque j'arrive pas a savoir  
 
si ça fonctionner ou nan ,voila le code :
 

Code :
  1. // client :
  2. #include <winsock.h>
  3. #include <stdio.h>
  4. #pragma comment(lib, "wsock32.lib" )
  5. int main()
  6. {
  7. char buffer[1024] ;
  8. char nomfichier[30] ;
  9. printf("fichier : " ) ;
  10. scanf("%s",nomfichier) ; //fichier.txt
  11. FILE* file = fopen(nomfichier, //ouverture en lecture seule en mode txt
  12. "rb" ) ;
  13. if(file == NULL)
  14. {
  15. printf("erreur lors l'ouverture du fichier\n" ) ;
  16. exit(-1) ;
  17. }
  18. WSADATA WSAData;
  19. WSAStartup(MAKEWORD(1,0), &WSAData);
  20. SOCKET sock;
  21. printf("Ip : " ) ;
  22. scanf("%s",buffer) ;
  23. SOCKADDR_IN sin;
  24. sock = socket(AF_INET, SOCK_STREAM, 0);
  25. // les proprietes du socket du server
  26. sin.sin_addr.s_addr = inet_addr(buffer);
  27. sin.sin_family = AF_INET;
  28. sin.sin_port = htons(4444);
  29. int err ;
  30. if(connect(sock, (SOCKADDR *)&sin, sizeof(sin)) == INVALID_SOCKET)
  31. {
  32. printf("la connection a echoué\n" ) ;
  33. getchar() ;
  34. scanf("%i",&err) ;
  35. return 1 ;
  36. }
  37. printf("connection etablie\n" ) ;
  38. send(sock,nomfichier,30,0) ;
  39. recv(sock,nomfichier,30,0) ;
  40. int SizeReaded = 1 ;
  41. long SizeSended = 1 ;
  42. printf("transfert des données en cours...\n" ) ;
  43. while(SizeReaded>0 && SizeSended>0)
  44. {
  45. SizeReaded = fread(buffer,1,1024,file) ;
  46. SizeSended = send(sock,buffer,SizeReaded,0) ;
  47. }
  48. fclose(file) ; // fermeture du fichier  
  49. closesocket(sock) ;
  50. WSACleanup() ;
  51. printf("fichier bien envoye\n" ) ;
  52. printf("appuyer sur une touche pour sortir ..." ) ;
  53. getchar() ;
  54. getchar() ;
  55. return 1;
  56. }
  57. /****************************************************/
  58. // server  
  59. #include <stdio.h> // printf
  60. #include <winsock.h>
  61. #pragma comment(lib, "wsock32.lib" )
  62. int main()
  63. {
  64. char buffer[1024] ;
  65. char nomfichier[30] ;
  66. memset(nomfichier,0,30) ;
  67. printf("veuillez attendre que le client se connecte ...\n" ) ;
  68. WSADATA WSAData;
  69. WSAStartup(MAKEWORD(1,0), &WSAData);
  70. SOCKET sock;
  71. SOCKET csock = INVALID_SOCKET;
  72. SOCKADDR_IN sin;
  73. sock = socket(AF_INET, SOCK_STREAM, 0);
  74. sin.sin_addr.s_addr = INADDR_ANY;
  75. sin.sin_family = AF_INET;
  76. sin.sin_port = htons(4444);
  77. bind(sock, (SOCKADDR *)&sin, sizeof(sin));
  78. listen(sock, 1);
  79. int a = sizeof(sin) ;
  80. while(csock == INVALID_SOCKET)
  81. {
  82. csock = accept(sock,(SOCKADDR*)&sin,&a) ;
  83. }
  84. printf("connection etablie\n" ) ;
  85. recv(csock,nomfichier,30,0) ;
  86. send(csock,nomfichier,30,0) ;
  87. FILE*file = fopen(nomfichier,"wb" ) ;
  88. if(file == NULL)
  89. {
  90. printf("erreur lors l'ouverture du fichier\n" ) ;
  91. exit(-1) ;
  92. }
  93. long SizeRecv = 1 ;
  94. int SizeWrited = 1 ;
  95. printf("reception des donnees ...\n" ) ;
  96. while(SizeRecv>0 && SizeWrited>0)
  97. {
  98. SizeRecv = recv(csock,buffer,1024,0) ; //reception des donnees
  99. SizeWrited = fwrite(buffer,1,SizeRecv,file); //ecriture du buffer
  100. }
  101. fclose(file) ;// fermeture du fichier
  102. printf("fermeture du fichier \n" ) ;
  103. closesocket(sock) ;
  104. WSACleanup() ;
  105. printf("transfert terminé fichier bien recu \n" ) ;
  106. printf("appuyer sur une touche pour sortir ..." ) ;
  107. getchar() ;
  108. return 1;
  109. }
  110. /****************************/


le probleme c'est que ça marche sur mon ordinateur .cepandant, lorsque je l'ai  
 
testé avec un de mes amis ayant un FireWall,ça n'a pas fonctionner il n'a rien  
 
recu .afin de bien clarifier la situation ,je crois qu'un autre test avec quelqun qui
 
a des connaissance en informatique sera fort utile .Sinon,ça sera simpa de me  
 
prevenir des erreurs que vous pourvez remarqué dans le code.
 
merçi d'avance

mood
Publicité
Posté le 07-01-2006 à 14:12:23  profilanswer
 

n°1278712
Emmanuel D​elahaye
C is a sharp tool
Posté le 07-01-2006 à 14:47:27  profilanswer
 

adm1n1s7ra7eur a écrit :

[/cpp]
le probleme c'est que ça marche sur mon ordinateur .cepandant, lorsque je l'ai testé avec un de mes amis ayant un FireWall,ça n'a pas fonctionner il n'a ien recu .


A-t-il autorisé le FW à recevoir sur le port 4444 ?


Message édité par Emmanuel Delahaye le 07-01-2006 à 19:56:26

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1278786
adm1n1s7ra​7eur
Posté le 07-01-2006 à 17:42:32  profilanswer
 


en tt cas ,il n'a pas vraiment de bonnes connaissances en  
 
informatique.donc ça sera normal qu'il refusera d'autoriser ou de  
 
desactiver son FireWall puisqu'il a peut sur son pc .Et c'est pourquoi je  
 
demande sur le forum de m'aider à tester l'application .

n°1278852
adm1n1s7ra​7eur
Posté le 07-01-2006 à 20:53:47  profilanswer
 

pas de testeur    !!
 
(:

n°1278867
Sve@r
Posté le 07-01-2006 à 21:41:54  profilanswer
 

adm1n1s7ra7eur a écrit :

pas de testeur    !!
 
(:


 
L'adresse localhost (127.0.0.1) a été justement créée pour que les gens puissent tester leurs programmes réseaux... sans avoir de réseau externe (ça passe par le réseau interne de ta carte mère). T'as pas besoin d'un second testeur pour voir si ton pgm fonctionne. Si ça marche pour 127.0.0.1, ça marchera pour toutes les autres IP.
 
Au pire, si vraiment t'as des craintes, tu peux tester sur ta propre IP. A ce moment là, la trame réseau quitte ta carte mère pour aller sur la carte réseau, fait une boucle et revient. C'est comme si ça venait vraiment de l'extèrieur !!!


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1278877
adm1n1s7ra​7eur
Posté le 07-01-2006 à 22:27:35  profilanswer
 

donc ,ça marche !!!
 
merçi pour le conseil  !!


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

  probleme du transfert d'un fichier

 

Sujets relatifs
sous sql plus exporter les résultats d'une requête dans un fichier[REGLE] Problème d'insertion dans une base MySql
Appeler un fichier avec le prog associéProbleme en C#: Ouvrir une Form a partir d'un bouton d'une autre Form
Gros et bizzare problemeProbleme avec Dreamweaver 8 (Includes php)
[JAVA] probleme d'affichage caracteres spéciauxAppeler les méthodes d'un fichier TLB
[RESOLU]Compter le nombre de ligne d'un fichierProblème de transfert de fichier avec le protocole FTP
Plus de sujets relatifs à : probleme du transfert d'un fichier


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR