Advertisement
DimkaM

http get

Mar 5th, 2019
330
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.30 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include "..\oscalls.h"
  4.  
  5. SOCKET soc;
  6. struct sockaddr_in si;
  7. unsigned char dom_name[64];
  8. unsigned char RX_BUF[4*1024];
  9. void initMCU(void){
  10.     YIELD();
  11.     OS_SETGFX(6);
  12. }
  13. C_task main (int argc, char *argv[])
  14. {
  15.     char *a=argv[1],*n=dom_name;
  16.     int len;
  17.     long htmlLen=-1l;
  18.     initMCU();
  19.     if(argc==1){
  20.         puts("Need more parameters");
  21.         return 1;
  22.     }
  23.     while(1){
  24.         unsigned char ch=*a;
  25.         if(ch=='-' || ch=='.' || (ch>='0' && ch<='9') ||
  26.             (ch>='A' && ch<='Z') ||(ch>='a' && ch<='z')) {
  27.             *n++=ch;
  28.             a++;
  29.             continue;
  30.         }
  31.         *n=0;
  32.         break;
  33.     }
  34.     si.sin_addr=*dns_resolver(dom_name);
  35.     si.sin_port=80<<8;
  36.     sprintf(RX_BUF, "GET %s HTTP/1.1\r\nHost: %s\r\n\r\n", a, dom_name);
  37.     soc=socket(AF_INET,SOCK_STREAM,0);
  38.     connect(soc, &si, sizeof(si));
  39.     send(soc,RX_BUF,strlen(RX_BUF),0);
  40.     while(htmlLen){
  41.         len=recv(soc,RX_BUF,sizeof(RX_BUF),0);
  42.         if(len!=0){
  43.             if(len<0){
  44.                 puts("Connection closed");
  45.                 break;
  46.             }else{
  47.                 *(RX_BUF+len)=0;
  48.                 if(htmlLen==(-1)){
  49.                     if((n=strstr(RX_BUF,"Content-Length: "))!=0){
  50.                         n+=16;
  51.                         sscanf(n,"%lu",&htmlLen);
  52.                         n=strstr(n,"\r\n\r\n")+4;
  53.                         len=len-(n-RX_BUF);
  54.                     }
  55.                 }
  56.                 htmlLen-=len;
  57.                 puts(RX_BUF);
  58.                 continue;
  59.             }
  60.         }else{
  61.             YIELD();
  62.         }
  63.     }
  64.     closesocket(soc,0);
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement