1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| int serveur (int argc, char * argv[])
{
int sock;
FILE * sortie;
struct sockaddr_in adresse;
char buffer[LG_BUFFER];
int nb_lus , i;
char path[1024];
if (lecture_argument(argc, argv, & adresse, "udp") < 0) exit(EXIT_FAILURE);
adresse.sin_family = AF_INET;
if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
perror("socket");
exit(EXIT_FAILURE);
}
if (bind(sock,(struct sockaddr*) & adresse, sizeof(struct sockaddr_in)) < 0) {
perror("bind");
exit(EXIT_FAILURE);
}
printf("donner le chemin du fichier\n");
scanf("%s",path);
if((sortie = fopen(path,"wb")) == NULL){
perror("erreur d'ouverture fichier");
exit(EXIT_FAILURE);
}
printf("début de réception\n");
while((nb_lus = recv(sock, buffer, LG_BUFFER, 0))>0){
if (nb_lus < 0) {
perror("reception");
break;
}
if(nb_lus == 0)break;
//printf("octet reçus : %X , %c\n",buffer,buffer);
if(buffer){fwrite(&buffer, 1, nb_lus,sortie);
}
if(fflush(sortie)==EOF){
perror("erreur d'écriture disque ");
exit(EXIT_FAILURE);
}
}
printf("fin de réception\n");
close(sock);
fclose(sortie);
return EXIT_SUCCESS;
} |
Partager