Parcourir la source

Improved read with stream

jancoow il y a 9 ans
Parent
commit
756153987c
1 fichiers modifiés avec 26 ajouts et 35 suppressions
  1. 26 35
      network.c

+ 26 - 35
network.c

@@ -54,48 +54,39 @@ char* httpGet(char address[]){
 
     char http[strlen(address) + 49]; //49 chars based on get command. Change this number if you change the domain name
     sprintf(http, "GET %s HTTP/1.1\r\nHost: saltyradio.jancokock.me \r\n\r\n", address);
-    int len = sizeof(http);
 
-    char buffer[800];
-    memset(buffer, 0, 800);
+    char buffer[2];
+    char* content = (char*) calloc(1 , 512);
+    int enters = 0;
+    int t = 0;
 
     if (NutTcpConnect(sock, inet_addr("62.195.226.247"), 80)) {
         printf("Can't connect to server\n");
     }else{
-        //FILE *stream;
-        //stream = _fdopen((int) sock, "r b");
-        if(NutTcpSend(sock, http, len) != len){
-            printf("Writing headers failed.\n");
-            NutDelay(1000);
-        }else{
+        FILE *stream;
+        stream = _fdopen((int) sock, "r+b");
+            fprintf(stream, http);
+            fflush(stream);
             printf("Headers %s writed. Now reading.", http);
-            NutDelay(1000);
-            NutTcpReceive(sock, buffer, sizeof(buffer));
-            //fread(buffer, 1, sizeof(buffer), stream);
-            NutDelay(1200);
-            printf(buffer);
-        };
-        //fclose(stream);
-    }
-    NutTcpCloseSocket(sock);
-    int i;
-    int enters = 0;
-    int t = 0;
-    char* content = (char*) calloc(1 , sizeof(buffer));
-    for(i = 0; i < strlen(buffer); i++)
-    {
-        if(enters == 4) {
-            content[t] = buffer[i];
-            t++;
-        }else {
-            if (buffer[i] == '\n' || buffer[i] == '\r') {
-                enters++;
-            }
-            else {
-                enters = 0;
+            NutDelay(3000);
+            //Removing header:
+            while(fgets(buffer, sizeof(buffer), stream) != NULL) {
+                if(enters == 4) {
+                    content[t] = buffer[0];
+                    t++;
+                }else {
+                    if (buffer[0] == '\n' || buffer[0] == '\r') {
+                        enters++;
+                    }
+                    else {
+                        enters = 0;
+                    }
+                }
             }
-        }
+        fclose(stream);
     }
+    NutTcpCloseSocket(sock);
+
     content[t] = '\0';
     printf("\nContent size: %d, Content: %s \n", t, content);
     isReceiving = false;
@@ -173,7 +164,7 @@ void parseAlarmJson(char* content){
                 getStringToken(content, &token[i + 1], url);
                 i++;
             }else if (jsoneq(content, &token[i], "name") == 0) {
-                getStringToken(name, &token[i + 1], name);
+                getStringToken(content, &token[i + 1], name);
                 i++;
             }
         }