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é\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é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é fichier bien recu \n") ;
printf("appuyer sur une touche pour sortir ...") ;
getchar() ;
return 1;
}
/****************************/
merçi d'avance