Advertisement
Guest User

Untitled

a guest
Feb 19th, 2020
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.07 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement