Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <unistd.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <netdb.h>
- #include <errno.h>
- #include "fonctionsTCP.h"
- #define PROG2 "Programme 2"
- #define PROG1 "Programme 1"
- int main(int argc, char **argv) {
- // CLIENT
- char distant; /* buffer */
- int sock, /* descripteur de la socket locale */
- port, /* variables de lecture */
- err; /* code d'erreur */
- char* nomMachServ; /* pour solution getaddrinfo */
- struct sockaddr_in addSockServ;
- int done = 0; /* adresse de la socket connexion du serveur */
- struct addrinfo hints; /* parametre pour getaddrinfo */
- struct addrinfo *result; /* les adresses obtenues par getaddrinfo */
- socklen_t sizeAdd; /* taille d'une structure pour l'adresse de socket */
- FILE *recu;
- struct fichier fichier;
- char ext[5]=".txt";
- char fnamew[100]= "";
- char fname[TAIL_BUF] = "";
- char path[10] = "./Recus/";
- char ch;
- int pos;
- char c;
- nomMachServ = argv[1];
- port = atoi(argv[2]);
- sock = socketClient(nomMachServ,port);
- if (sock < 0) {
- perror("(client) erreur sur la creation de socket");
- return -2;
- }
- printf("(client) donner le nom du fichier distant : ");
- scanf("%s", fichier.distant);
- printf("(client) donner le nom du fichier local : ");
- scanf("%s", fichier.local);
- err = send(sock, (void*)&fichier, sizeof(fichier), 0);
- if (err <= 0) {
- perror("(client) erreur sur le send");
- shutdown(sock, SHUT_RDWR); close(sock);
- return -5;
- }
- done = 1;
- if(done != 0) {
- // SERVEUR
- int resultat = 0;
- int sockConx,
- sockTrans,
- sizeAddr;
- char buffer[TAIL_BUF];
- struct sockaddr_in addServ;
- struct sockaddr_in addClient;
- sockConx = socketServeur(9014);
- if (sockConx < 0) {
- perror("(serveurTCP) erreur de socket");
- return -2;
- }
- sizeAddr = sizeof(struct sockaddr_in);
- sockTrans = accept(sockConx,(struct sockaddr *)&addClient,(socklen_t *)&sizeAddr);
- if (sockTrans < 0) {
- perror("(serveurTCP) erreur sur accept");
- return -5;
- }
- err = recv(sockTrans, &fichier, sizeof(struct fichier), 0);
- if (err <= 0) {
- perror("(serveurTCP) erreur dans la reception");
- shutdown(sockTrans, SHUT_RDWR); close(sockTrans);
- return -6;
- }
- strcat(fname,path);
- strcat(fname,fichier.local);
- strcat(fname,ext);
- FILE *recu = fopen(fname, "w");
- if (recu == NULL)
- {
- printf("Cannot open file");
- exit(0);
- }
- int return_val = fputs(fichier.content,recu);
- if (return_val >= 0 )
- printf("=> ");
- else
- printf("failed");
- printf("(serveurTCP) Fichier %s téléchargé est sauvegardé sur Recus/%s.txt\n",fichier.distant,fichier.local);
- // EXIT SERVEUR
- shutdown(sockTrans, SHUT_RDWR);
- close(sockTrans);
- close(sockConx);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement