Programation c [Résolu]

Signaler
Messages postés
1
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
17 décembre 2009
-
cs_biyiha
Messages postés
13
Date d'inscription
dimanche 18 octobre 2009
Statut
Membre
Dernière intervention
18 décembre 2009
-
bonsoir a tous j'aimerai savoir comment faire pour recuperer des mots à partir d'un fichier
et de les mettre ensuite dans une structure cellule

2 réponses

Messages postés
13
Date d'inscription
dimanche 18 octobre 2009
Statut
Membre
Dernière intervention
18 décembre 2009

salut , j'ai un problème avec mes deux programmes , ils se compile bien mais au niveau de l'excution avec le gcc c'est là qu'il y'a pblème
je vous en voi mes programmes pour que vous voyez où il y'a pblème
merci d'avnce de bien vouloir m'aidez::
prog client ftp

/********************** client ********************************/
#include"socin.h"
#define port 2000
#define h_addr h_addr_list[0]

void transfert(int sock_id, struct sockaddr_in *server_ad,char*name);
int main(int argc, char* argv[])
{
if (argc != 4)
{ perror("nombre d'argument incorrect\n systaxe : $0 nom_ser nb_msg taille_msg \n");
exit(1);
};
//int nb_msg=atoi(argv[2]);
//int T_max= atoi(argv[3]);

// struct sockaddr_in local_ad;
int sock_id;
struct hostent *info_serv;
struct sockaddr_in server_ad;
sock_id=socket(AF_INET,SOCK_DGRAM,0);
if (sock_id ==0) perror("creation de socket");
printf("le descripteur de la socket: %d \n", sock_id);

/*recuperation d'info serveur:*/
info_serv=gethostbyname(argv[1]);
if (info_serv==NULL) {perror("info serveur \n");close(sock_id);exit(1);};
server_ad.sin_port=htons(port);
server_ad.sin_family=AF_INET;
memcpy(&server_ad.sin_addr.s_addr,info_serv->h_addr,info_serv->h_length);
transfert(sock_id,&server_ad,argv[2]);

exit(0);
}
// ouverture et envoie du fichier

#define SIZE_BLOCK 1024

void ouvrir(int sock, char *name)
{
FILE*fic;
char* buffer;
int taille,nbbloc,reste,i;

struct sockaddr_in server_ad;
fic=fopen(name,"rb");

fseek(fic,0,SEEK_END);
taille=ftell(fic);
fseek(fic,0,SEEK_SET);
nbbloc=taille/SIZE_BLOCK;
reste=taille%SIZE_BLOCK;
buffer=(char*)malloc(SIZE_BLOCK);
for (i=0;i<nbbloc;i++)
{
fread(buffer, 1, SIZE_BLOCK,fic);
sendto(sock,buffer,SIZE_BLOCK,0,(struct sockaddr*)&server_ad,sizeof(server_ad));
fclose(fic);
}



}

programme serveur ftp

/***************************************serveur*************************************/
#include "socin.h"
//#include "echo_ser.h"
#define port 2000
#define h_addr h_addr_list[0]
int sock_id;
void transfert();
int main()
{int cc;
char nom[50];
struct hostent *info_loc;
struct sockaddr_in local_ad;
cc=gethostname(nom,sizeof(nom));
if (cc==-1) {perror("gethostname");exit(1);}

printf("le nom de la machine: %s\n" ,nom);

info_loc=gethostbyname(nom);
if (info_loc==NULL) {perror("gethostbyname");exit(1);}

/*struct construction */
local_ad.sin_port=htons(port);
local_ad.sin_family=AF_INET;
local_ad.sin_addr.s_addr = htonl(INADDR_ANY);
/* socket creation and linking*/
sock_id=socket(AF_INET,SOCK_DGRAM,0);
cc=bind(sock_id,(struct sockaddr *)&local_ad,sizeof(local_ad));
if (cc==-1){
perror("l'attachement de la socket");
close(sock_id);
exit(1);
}
else {printf("socket attachement fait:\n");};
printf("serveur en attente sur la socket:%d\n", sock_id);
transfert();

return (0);}

#define SIZE_BLOCK 1024
// FONCTION DE RECEPTION DU NOM DE FICHIER
void reception(int sock,char* name,int taille, struct sockaddr*cli)
{
FILE*fic;
int recept=0;
int nb;
char* buffer;
buffer=(char*)malloc(SIZE_BLOCK);
//int lg=sizeof(struct sockaddr) ;
fic=fopen(name,"wb");
while(taille!=recept)
{
nb=recvfrom(sock,buffer,SIZE_BLOCK,0,cli,sizeof(*cli));
fwrite(fic,1,nb,buffer);
recept=0;
fclose(fic);
}
}
Messages postés
13
Date d'inscription
dimanche 18 octobre 2009
Statut
Membre
Dernière intervention
18 décembre 2009

prog serveur au lieu de recept=0; j'ai remplacé recept=nb;

/***************************************serveur*************************************/
#include "socin.h"
//#include "echo_ser.h"
#define port 2000
#define h_addr h_addr_list[0]
int sock_id;
void transfert();
int main()
{int cc;
char nom[50];
struct hostent *info_loc;
struct sockaddr_in local_ad;
cc=gethostname(nom,sizeof(nom));
if (cc==-1) {perror("gethostname");exit(1);}

printf("le nom de la machine: %s\n" ,nom);

info_loc=gethostbyname(nom);
if (info_loc==NULL) {perror("gethostbyname");exit(1);}

/*struct construction */
local_ad.sin_port=htons(port);
local_ad.sin_family=AF_INET;
local_ad.sin_addr.s_addr = htonl(INADDR_ANY);
/* socket creation and linking*/
sock_id=socket(AF_INET,SOCK_DGRAM,0);
cc=bind(sock_id,(struct sockaddr *)&local_ad,sizeof(local_ad));
if (cc==-1){
perror("l'attachement de la socket");
close(sock_id);
exit(1);
}
else {printf("socket attachement fait:\n");};
printf("serveur en attente sur la socket:%d\n", sock_id);
transfert();

return (0);}

#define SIZE_BLOCK 1024
// FONCTION DE RECEPTION DU NOM DE FICHIER
void reception(int sock,char* name,int taille, struct sockaddr*cli)
{
FILE*fic;
int recept=0;
int nb;
char* buffer;
buffer=(char*)malloc(SIZE_BLOCK);
//int lg=sizeof(struct sockaddr) ;
fic=fopen(name,"wb");
while(taille!=recept)
{
nb=recvfrom(sock,buffer,SIZE_BLOCK,0,cli,sizeof(*cli));
fwrite(fic,1,nb,buffer);
recept=nb;
fclose(fic);
}
}