POST пакет "С"

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by demonoid, 12 Jan 2007.

  1. demonoid

    demonoid Banned

    Joined:
    12 Jan 2007
    Messages:
    101
    Likes Received:
    111
    Reputations:
    27
    Задача такая :
    Надо отправить POST запрос на "С"
    запрос такого типа:

    Code:
    POST /file.html HTTP/1.0
    Accept: */*
    Referer: http://www.site.ru/file.html?lang=ua
    Accept-Language: ru
    Content-Type: application/x-www-form-urlencoded
    User-Agent: Internet Explorer 6.0
    Host: www.site.ru
    Content-Length: 83
    Pragma: no-cache
    Cookie: countfile=1; 
    Connection: Keep-Alive
    
    submitted=true&lang=ua&code=1124&message=Lolof
    не могу найти мануал :( ,мож хто подкинет или примерчик ?
     
  2. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Ищи мануал по сокетам.
     
  3. Go0o$E

    Go0o$E Members of Antichat

    Joined:
    27 Jan 2006
    Messages:
    304
    Likes Received:
    228
    Reputations:
    419
    Поидее так.
     
  4. demonoid

    demonoid Banned

    Joined:
    12 Jan 2007
    Messages:
    101
    Likes Received:
    111
    Reputations:
    27
    msdn.com облазил не смог найти :(
     
  5. demonoid

    demonoid Banned

    Joined:
    12 Jan 2007
    Messages:
    101
    Likes Received:
    111
    Reputations:
    27
    Можно попобродней структуру?
    копилятор под win
     
  6. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    вот: http://forum.antichat.ru/thread27529.html
     
  7. Go0o$E

    Go0o$E Members of Antichat

    Joined:
    27 Jan 2006
    Messages:
    304
    Likes Received:
    228
    Reputations:
    419
    Вот этот должен работать
    Проверен на работоспособность, компилил под lcc.
     
    #7 Go0o$E, 12 Jan 2007
    Last edited: 12 Jan 2007
    1 person likes this.
  8. dexus

    dexus New Member

    Joined:
    6 Jan 2007
    Messages:
    6
    Likes Received:
    2
    Reputations:
    0
    Code:
    #define SENDBUF_LEN 512
    
    void ComposeRequest(char* dest)
    {
      ZeroMemory(dest, SENDBUF_LEN);
      lstrcpy(dest, "POST /file.html HTTP/1.0\r\n);
      lstrcat(dest, "Referer: http://www.site.ru/file.html?lang=ua\r\n");
      lstrcat(dest, "Accept-Language: ru\r\n");
      lstrcat(dest, "Content-Type: application/x-www-form-urlencoded\r\n");
      lstrcat(dest, "User-Agent: Internet Explorer 6.0\r\n");
      lstrcat(dest, "Host: www.site.ru\r\n)";
      lstrcat(dest, "Content-Length: 83\r\n");
      lstrcat(dest, "Cookie: countfile=1;\r\n");
      lstrcat(dest, "Connection: Keep-Alive\r\n\r\n");
      lstrcat(dest, "submitted=true&lang=ua&code=1124&message=Lolof\r\n");
    }
    
    main ()
    {
      WSADATA theWSAData;
      if (WSAStartup(WINSOCK_VERSION, &theWSAData) != 0)
      {
         printf("WSAStartup(): Initialization error\n");
         return;
      }
      else
      {
        SOCKADDR_IN SCKT_ADDR;
        SCKT_addr.sin_family = AF_INET;
        SCKT_addr.sin_addr.s_addr = inet_addr("бла бла");
        SCKT_addr.sin_port = htons(80);
    //     
        SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
        if (s != INVALID_SOCKET)
        {
           int s_rslt = connect(sn.s, (PSOCKADDR)&SCKT_ADDR, sizeof(SCKT_ADDR));
          if (s_rslt != SOCKET_ERROR) 
          {
              char sendbuf[SENDBUF_LEN];
              ComposeRequest(sendbuf);
              send(s, (char*)sendbuf, lstrlen(sendbuf), 0);
          }
        }
      }
      WSACleanup();
    }
    
    тип того
    много lstrcat'ов - просто для наглядности
     
    #8 dexus, 12 Jan 2007
    Last edited: 12 Jan 2007
  9. demonoid

    demonoid Banned

    Joined:
    12 Jan 2007
    Messages:
    101
    Likes Received:
    111
    Reputations:
    27
    извините конечно но ошибок вы столько специально заделали чтобы помучался ? :)
     
  10. dexus

    dexus New Member

    Joined:
    6 Jan 2007
    Messages:
    6
    Likes Received:
    2
    Reputations:
    0
    пардон, переделывал из кода, где запрос вычисляется

    очепятка:
    lstrcpy(dest, "POST /file.html HTTP/1.0\r\n"); // кавычки

    + в коде не достает инклюда и дефайна. вот они

    #define WINSOCK_VERSION 0x0002
    #include <winsock2.h>

    + SCKT_addr.sin_addr.s_addr = inet_addr("бла бла"); // адрес сервера, к которому коннектимся, его надо подставить вместо бла-бла )))

    под борланд С++ билдером все работает
     
    #10 dexus, 12 Jan 2007
    Last edited: 12 Jan 2007
  11. demonoid

    demonoid Banned

    Joined:
    12 Jan 2007
    Messages:
    101
    Likes Received:
    111
    Reputations:
    27
    спапасибо,на работоспособность проверил в локелке всё супир :) +1
     
  12. demonoid

    demonoid Banned

    Joined:
    12 Jan 2007
    Messages:
    101
    Likes Received:
    111
    Reputations:
    27
    Возник новый вопрос как получить ответ от сервера ?