SHARE
TWEET

Untitled

a guest Feb 19th, 2020 67 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <unistd.h>
  5. #include <sys/types.h>
  6. #include <sys/socket.h>
  7. #include <netinet/in.h>
  8. #include <arpa/inet.h>
  9. #include <netdb.h>
  10. #include <errno.h>
  11. #include "fonctionsTCP.h"
  12.  
  13. #define PROG2 "Programme 2"
  14. #define PROG1 "Programme 1"
  15.  
  16.  
  17. int main(int argc, char **argv) {
  18.  
  19.   // CLIENT
  20.  
  21.   char distant;   /* buffer */
  22.   int sock,                /* descripteur de la socket locale */
  23.       port,                /* variables de lecture */
  24.       err;                 /* code d'erreur */
  25.   char* nomMachServ;       /* pour solution getaddrinfo */
  26.   struct sockaddr_in addSockServ;  
  27.   int done = 0;                         /* adresse de la socket connexion du serveur */
  28.   struct addrinfo hints;   /* parametre pour getaddrinfo */
  29.   struct addrinfo *result; /* les adresses obtenues par getaddrinfo */
  30.   socklen_t sizeAdd;       /* taille d'une structure pour l'adresse de socket */
  31.   FILE *recu;
  32.   struct fichier fichier;
  33.  
  34.   char ext[5]=".txt";
  35.   char fnamew[100]= "";
  36.   char fname[TAIL_BUF] = "";
  37.   char path[10] = "./Recus/";
  38.   char ch;
  39.   int pos;
  40.  
  41.     char c;
  42.  
  43.   nomMachServ = argv[1];
  44.   port = atoi(argv[2]);
  45.   sock = socketClient(nomMachServ,port);
  46.   if (sock < 0) {
  47.     perror("(client) erreur sur la creation de socket");
  48.     return -2;
  49.   }
  50.  
  51.   printf("(client) donner le nom du fichier distant : ");
  52.   scanf("%s", fichier.distant);
  53.  
  54.   printf("(client) donner le nom du fichier local : ");
  55.   scanf("%s", fichier.local);
  56.  
  57.  
  58.   err = send(sock, (void*)&fichier, sizeof(fichier), 0);
  59.  
  60.   if (err <= 0) {
  61.     perror("(client) erreur sur le send");
  62.     shutdown(sock, SHUT_RDWR); close(sock);
  63.     return -5;
  64.   }
  65.   done = 1;
  66.  if(done != 0) {
  67.    // SERVEUR
  68.      int resultat = 0;
  69.  
  70.     int  sockConx,        
  71.        sockTrans,      
  72.        sizeAddr;
  73.          
  74.   char buffer[TAIL_BUF];
  75.  
  76.   struct sockaddr_in addServ;  
  77.   struct sockaddr_in addClient;
  78.   sockConx = socketServeur(9014);
  79.   if (sockConx < 0) {
  80.     perror("(serveurTCP) erreur de socket");
  81.     return -2;
  82.   }
  83.  
  84.   sizeAddr = sizeof(struct sockaddr_in);
  85.   sockTrans = accept(sockConx,(struct sockaddr *)&addClient,(socklen_t *)&sizeAddr);
  86.   if (sockTrans < 0) {
  87.     perror("(serveurTCP) erreur sur accept");
  88.     return -5;
  89.   }
  90.   err = recv(sockTrans, &fichier, sizeof(struct fichier), 0);
  91.   if (err <= 0) {
  92.     perror("(serveurTCP) erreur dans la reception");
  93.     shutdown(sockTrans, SHUT_RDWR); close(sockTrans);
  94.     return -6;
  95.   }
  96.  
  97.   strcat(fname,path);
  98.     strcat(fname,fichier.local);
  99.     strcat(fname,ext);
  100.  
  101.     FILE *recu = fopen(fname, "w");
  102.     if (recu == NULL)
  103.     {
  104.         printf("Cannot open file");
  105.         exit(0);
  106.     }
  107.  
  108.     int return_val = fputs(fichier.content,recu);
  109.  
  110.         if (return_val >= 0 )
  111.             printf("=> ");
  112.  
  113.         else
  114.             printf("failed");
  115.     printf("(serveurTCP) Fichier %s téléchargé est sauvegardé sur Recus/%s.txt\n",fichier.distant,fichier.local);
  116.  
  117.   // EXIT SERVEUR
  118.  
  119.   shutdown(sockTrans, SHUT_RDWR);
  120.   close(sockTrans);
  121.   close(sockConx);
  122.   }
  123.  
  124.   return 0;
  125. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top