diff options
Diffstat (limited to 'src/client/client.bak')
-rw-r--r-- | src/client/client.bak | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/src/client/client.bak b/src/client/client.bak deleted file mode 100644 index bacfa52..0000000 --- a/src/client/client.bak +++ /dev/null @@ -1,75 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <errno.h> -#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <netdb.h> -#include <arpa/inet.h> -#include <unistd.h> - -#include <math.h> - -#include "../include/types.h" - -#define FILE_SIZE 721127424 - -int main(int argc, char *argv[]) -{ - struct sockaddr_in server; - unsigned long addr; - int sock; - - // Create socket - sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); - if (sock < 0) - { - printf("ERROR: Socket failure\n"); - return EXIT_FAILURE; - } - - addr = inet_addr(HOST); - memcpy((char *) &server.sin_addr, &addr, sizeof(addr)); - server.sin_family = AF_INET; // IPv4 - server.sin_port = htons(PORT); // set port number - - // Connect to server - if (connect(sock, (struct sockaddr*) &server, sizeof(server)) < 0) - { - printf("ERROR: Connect failure\n"); - return EXIT_FAILURE; - } - - // Set data - struct dnbd3_request request; - struct dnbd3_reply reply; - request.num = 0; - - // Send to server - int i; - off_t blocks = FILE_SIZE / DNBD3_BLOCK_SIZE; - int e = log(DNBD3_BLOCK_SIZE) / log(2); // logarithmus dualis - - - for (i = 0; i < blocks; i++) - { - request.num = i << e; // multiplie by e - send(sock, (char *) &request, sizeof(request), 0); - recv(sock, &reply, DNBD3_BLOCK_SIZE, MSG_WAITALL); - write(STDOUT_FILENO, reply.data, DNBD3_BLOCK_SIZE); - } - - /* Fetch "rest" bytes */ - int rest = FILE_SIZE % DNBD3_BLOCK_SIZE; - if (rest != 0) - { - request.num = i * DNBD3_BLOCK_SIZE; - send(sock, (char *) &request, sizeof(request), 0); - recv(sock, &reply, sizeof(struct dnbd3_reply), MSG_WAITALL); - write(STDOUT_FILENO, reply.data, rest); - } - - close(sock); - return EXIT_SUCCESS; -} |