adm1n1s7ra7eur | 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 :
- // client :
- #include <winsock.h>
- #include <stdio.h>
- #pragma comment(lib, "wsock32.lib" )
- int main()
- {
- char buffer[1024] ;
- 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);
- int err ;
- if(connect(sock, (SOCKADDR *)&sin, sizeof(sin)) == INVALID_SOCKET)
- {
- printf("la connection a echoué\n" ) ;
- getchar() ;
- scanf("%i",&err) ;
- 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ées en cours...\n" ) ;
- while(SizeReaded>0 && SizeSended>0)
- {
- SizeReaded = fread(buffer,1,1024,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[1024] ;
- 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,1024,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é fichier bien recu \n" ) ;
- printf("appuyer sur une touche pour sortir ..." ) ;
- getchar() ;
- return 1;
- }
- /****************************/
|
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 |