Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <fcntl.h>
- #include <ctype.h>
- #include <netinet/in.h>
- #include <netdb.h>
- #include <string.h>
- #include <stdio.h>
- #define SRV_PORT 1234
- #define CLNT_PORT 1235
- #define NAMES 1024
- #define FILE_SIZE 3000
- int main(int argc, char * argv[])
- {
- unsigned char srv_host [NAMES];
- unsigned char source [NAMES];
- unsigned char dest [NAMES];
- unsigned char message[FILE_SIZE];
- strcpy(srv_host, strtok(argv[1], "@"));
- strcpy (source, strtok(NULL, "\0"));
- strcpy(dest, argv[2]);
- int s;
- int from_len;
- struct hostent *hp;
- struct sockaddr_in clnt_sin, srv_sin;
- if((s = socket (AF_INET, SOCK_STREAM, 0)) < 0)
- {
- perror("socket");
- exit(1);
- }
- memset ((char *)&clnt_sin, '\0', sizeof(clnt_sin));
- clnt_sin.sin_family = AF_INET;
- clnt_sin.sin_addr.s_addr = INADDR_ANY;
- clnt_sin.sin_port = CLNT_PORT;
- bind (s, (struct sockaddr *)&clnt_sin, sizeof(clnt_sin));
- memset ((char *)&srv_sin, '\0', sizeof(srv_sin));
- hp = gethostbyname (srv_host);
- srv_sin.sin_family = AF_INET;
- memcpy ((char *)&srv_sin.sin_addr,hp->h_addr,hp->h_length);
- srv_sin.sin_port = SRV_PORT;
- if(connect (s, &srv_sin, sizeof(srv_sin)) < 0)
- {
- perror("connect");
- exit(2);
- }
- send(s, source, NAMES, 0);
- FILE * file;
- strcat(dest, "/temp");
- if((file = fopen(strcat(dest, ".tar"), "w+")) == NULL){
- perror("file");
- exit(3);
- }
- while((from_len = recv (s, message, 1, 0)) != 0){
- fwrite(message, 1, 1, file);
- }
- fclose(file);
- char tar[] = "tar -xf ";
- strcat(tar, dest);
- strcat(tar, " -C ");
- strcat(tar, argv[2]);
- system(tar);
- close (s);
- char rm[] = "rm ";
- system(strcat(rm, dest));
- exit (0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement