kaikas 7 years ago
parent
commit
4ec7981a8e
1 changed files with 48 additions and 44 deletions
  1. 48 44
      src/myco-modules-default.c

+ 48 - 44
src/myco-modules-default.c

@@ -23,55 +23,59 @@
 #include <stdio.h>
 #include <string.h>
 
-// Request(local pointer, remote pointer, size)
-// make ping pong example
-myco_network_fetch_resource(void *local_pointer, pid_t local_pid, int size) {
-	printf("\nTransferring data over network!\n");
+#define BUF 1024
+int myco_network_fetch_resource(void *local_pointer, pid_t local_pid, int resource_size) {
+    printf("\nTransferring data over network!\n");
 
-	// Create local memory for transfer
-	void *resource_pointer = malloc(size);
 
-	// Create socket for transfer
-	int create_socket, new_socket;
-        socklen_t addrlen;
-        char *buffer = malloc (size);
-        //ssize_t size;
-        struct sockaddr_in address;
-        const int y = 1;
-    	char *command;
-	char *agent;
-	char *resource;
+    int port = 15001;
+    int create_socket, new_socket;
+    socklen_t addrlen;
+    char *buffer = malloc (BUF);
+    ssize_t size;
+    struct sockaddr_in address;
+    const int y = 1;
+    char *command;
+    char *agent;
+    char *resource;
 
-	printf ("\e[2J");
-	create_socket = socket (AF_INET, SOCK_STREAM, 0);
-	setsockopt(create_socket, SOL_SOCKET,
-	    SO_REUSEADDR, &y, sizeof(int));
-	address.sin_family = AF_INET;
-	address.sin_addr.s_addr = INADDR_ANY;
-	address.sin_port = htons (15001);
-	if (bind ( create_socket,
-		(struct sockaddr *) &address,
-		sizeof (address)) != 0) {
-	printf( "Port already taken!\n");
-	}
-	listen (create_socket, 5);
-	addrlen = sizeof (struct sockaddr_in);
+    create_socket=socket (AF_INET, SOCK_STREAM, 0);
+    setsockopt( create_socket, SOL_SOCKET,
+            SO_REUSEADDR, &y, sizeof(int));
+    address.sin_family = AF_INET;
+    address.sin_addr.s_addr = INADDR_ANY;
+    address.sin_port = htons (port);
+    if (bind ( create_socket,
+                (struct sockaddr *) &address,
+                sizeof (address)) != 0) {
+        printf( "Port already taken!\n");
+    }
+    listen (create_socket, 5);
+    addrlen = sizeof (struct sockaddr_in);
+    while (1) {
+        new_socket = accept (create_socket, (struct sockaddr *) &address, &addrlen);
+        printf("DEBUG\n");
+        if (new_socket > 0)
+            inet_ntoa (address.sin_addr);
+        do {
+            size = recv (new_socket, buffer, BUF-1, 0);
+            if( size > 0)
+                buffer[size] = '\0';
 
-	// Receive data
-	printf("Waiting to receive data.\n");
-	while (1) {
-		ssize_t received = recv(create_socket, buffer, size, 0);
-		printf("Received %s\n", buffer);
-	}
-	
-	// Read memory over network
+            printf ("DEBUG: %s\n", buffer);
 
+        } while (strcmp (buffer, "quit\n") != 0);
+        close (new_socket);
+    }
+    close (create_socket);
 
-	// Write memory to Agent
-	if (myco_write_memory(local_pid, local_pointer, size, (void *)resource_pointer, size) == -1) {
-		printf("ERROR: %s\n", strerror(errno));
-		return -1;
-	}
+    /*
+    // Write memory to Agent
+    if (myco_write_memory(local_pid, local_pointer, size, (void *)resource_pointer, size) == -1) {
+        printf("ERROR: %s\n", strerror(errno));
+        return -1;
+    }
+    */
 
-	return 0;
+    return 0;
 }