summaryrefslogtreecommitdiffstats
path: root/src/client/client.bak
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/client.bak')
-rw-r--r--src/client/client.bak75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/client/client.bak b/src/client/client.bak
new file mode 100644
index 0000000..bacfa52
--- /dev/null
+++ b/src/client/client.bak
@@ -0,0 +1,75 @@
+#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;
+}