seito
bonjours,
j'aimerais déveloper une application de transfert de fichier sous MFC avec Visual C++ 6.
le code que j'ai conçus marche parfaitement quand je l'execute sur la même machine. mais il bloque quand j'essai de l'executer sur deux machines distinct et ce que quelqu'un peut me dir ce qui cloche.
je met à votre disposition mon code:
pour l'envoi:
HWND hDlg= GetSafeHwnd();
char fileName[MAXLEN_FILEINFO];
char strFilterString[32];
char *res=new char[100];
memset(fileName,0,sizeof(fileName));
memset(StrStatus,0,sizeof(StrStatus));
memset(strFilterString,0,sizeof(strFilterString));
sprintf(strFilterString," ALL FILES");
sprintf(&strFilterString[strlen(strFilterString)+1],"*.*");
BOOL th=BrowseLicenceFile(hDlg,fileName, ".\",strFilterString) ;
chemin(fileName);//c'est une fonction qui me permet d'ajouter un autre \ dans le chemin du fichier à ouvrir
nom_fichier(fileName,res);//cet fonction me permet d'isoler le nom de fichier
f=fopen(fileName,"rb");
fseek(f,0,SEEK_END);
int taille=ftell(f);
fseek(f,0,SEEK_SET);
if(th=TRUE)
{
int nreception=0;
int nlecture=0;
char* buff=new char[1025];
itoa(taille,buff,10);
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock;
SOCKADDR_IN sin;
char *buffer = new char[1025];
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr = inet_addr("192.168.0.105");
sin.sin_family = AF_INET;
sin.sin_port = htons(8080);
connect(sock, (SOCKADDR *)&sin, sizeof(sin));
send(sock,buff,100,0);
send(sock,res,100,0);
while(!feof(f))
{
nlecture=fread(buff,1024,1,f);
send(sock,buff,1024,0);
}
MessageBox("reussi","r",0);
nreception=recv(sock,buffer,50,0);
buffer[nreception]='\0';
MessageBox("reception reussite","r",0);
}
else
{
MessageBox("desole"," ",16);
}
pour la reception coté serveur j'ai fait comme suit:
int j=1;
FILE* fh;
int taille=0;
int taille_fichier=0;
int n=0;
SOCKET sock,client;
SOCKADDR_IN sin,csin;
char *buff=new char[1024];
sin.sin_addr.s_addr = inet_addr("192.168.0.105");
sin.sin_family = AF_INET;
sin.sin_port = htons(8080);
sock = socket(AF_INET,SOCK_STREAM,0);
bind(sock, (SOCKADDR *)&sin, sizeof(sin));
listen(sock,0);
int sinsize = sizeof(csin);
if((client=accept(sock,(SOCKADDR *) &csin, &sinsize))!=INVALID_SOCKET)
{
taille=recv(client,buff,1024,0);
taille_fichier=atoi(buff);
recv(client,buff,1024,0);
fh=fopen(buff,"wb");
fseek(fh,0,SEEK_SET);
do
{
n=recv(client,buff,1024,0);
fwrite(buff,n,1,fh);
taille_fichier-=n;
}
while(taille_fichier>0);
send(client,"hello world\n\r",14,0);
MessageBox("envoi reussi","reussi",0);
}
else
{
j=0;
MessageBox("connection impossible","echec",0);
}
fclose(fh);
}
dans l'attente d'une réponse merci.