Erreur completement inexplicable !

anonyme_man_in_this_world Messages postés 161 Date d'inscription samedi 25 juin 2005 Statut Membre Dernière intervention 1 août 2006 - 6 janv. 2006 à 16:01
anonyme_man_in_this_world Messages postés 161 Date d'inscription samedi 25 juin 2005 Statut Membre Dernière intervention 1 août 2006 - 6 janv. 2006 à 22:13
salut !


lorsque j' execute les deux programmes sur mon pc, tout marche bien ,meme si je

valide l'ip internet . Mais lorsque je les ai testé avec mes amis ,le fichier n'est pas recu !

en tout cas ,voila les codes :

/*************************************/
// 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

4 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
6 janv. 2006 à 16:59
J'en sais rien, mais y a t-il une limite de taille pour les paquets IP ? Il me semble que les tiens sont plutot gros.
0
CoyoteVsBeepBeep Messages postés 41 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 3 mars 2006
6 janv. 2006 à 17:37
hello,
effectivement, j'ai remanqué un limitation vers les 1500 octets par trame.
au dela ca passe pas. (pour info, 1024 ca passe.)
0
anonyme_man_in_this_world Messages postés 161 Date d'inscription samedi 25 juin 2005 Statut Membre Dernière intervention 1 août 2006
6 janv. 2006 à 21:04
merçi pour votre aide les amis.cepandant ,j'arrive pas trouver

quelqun avec lequel je peux tester le programme.ça sera vraiment

simpa si quelqun le teste avec moi(vous pouvez m'envoyer un

message privé).

superbe merçi d'avance .
0
anonyme_man_in_this_world Messages postés 161 Date d'inscription samedi 25 juin 2005 Statut Membre Dernière intervention 1 août 2006
6 janv. 2006 à 22:13
je l'ai retesté avec un de mes amis ,mais ça n'a pas marché (j'ai pas

confiance en lui) .je suis entrain de mourir !aidez moi ! ça sera

vraiment simpa si quelqun le teste soi avec moi ou avec une autre

personne.

merçi d'avance
0
Rejoignez-nous