The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
http запрос на с, !*! korn, 15-Июл-04, 21:45  [смотреть все]
Есть прога ,которая посылает http запрос серваку и должна получить index.html.
у меня получается послать запрос,сервак его обрабатывает но мне не удается принять файл!!!
вот кусок кода:
char *buf="GET /index.html HTTP/1.0";
..
connect(sock,(struct sockaddr*)&cli,sizeof(cli));
..
int k=send(sock,buf,sizeof(buf),0);

printf("%d bytes send\n",k);

recv(sock,recved,sizeof(recved),0);
printf("%s",recved);
close(sock);
Ну вот после этого прога не может файл получить и виснет.
А если я намеренно посылаю неправильный запрос то сервак мне посылает 400 Bad request и это у меня отображается на зкране!!!!

  • http запрос на с, !*! klalafuda, 22:02 , 15-Июл-04 (1)
    >Есть прога ,которая посылает http запрос серваку и должна получить index.html.
    >у меня получается послать запрос,сервак его обрабатывает но мне не удается принять
    >файл!!!
    >вот кусок кода:
    >char *buf="GET /index.html HTTP/1.0";
    >..
    >connect(sock,(struct sockaddr*)&cli,sizeof(cli));
    >..
    >int k=send(sock,buf,sizeof(buf),0);

    читайте книги по C для начинающих
    hint: sizeof(buf) в вашем случае совершенно неуместен и программа уже некорректно работает. дальше уже дело случая.

    >printf("%d bytes send\n",k);
    >
    >recv(sock,recved,sizeof(recved),0);
    >printf("%s",recved);
    >close(sock);

    что из себя представляет recved ? хотя я могу догадаться.. char *, да ?

    // wbr

    • http запрос на с, !*! korn, 22:54 , 15-Июл-04 (2)
      >>Есть прога ,которая посылает http запрос серваку и должна получить index.html.
      >>у меня получается послать запрос,сервак его обрабатывает но мне не удается принять
      >>файл!!!
      >>вот кусок кода:
      >>char *buf="GET /index.html HTTP/1.0";
      >>..
      >>connect(sock,(struct sockaddr*)&cli,sizeof(cli));
      >>..
      >>int k=send(sock,buf,sizeof(buf),0);
      >
      >читайте книги по C для начинающих
      >hint: sizeof(buf) в вашем случае совершенно неуместен и программа уже некорректно работает.
      >дальше уже дело случая.
      >
      >>printf("%d bytes send\n",k);
      >>
      >>recv(sock,recved,sizeof(recved),0);
      >>printf("%s",recved);
      >>close(sock);
      >
      >что из себя представляет recved ? хотя я могу догадаться.. char *,
      >да ?
      >
      >// wbr

      Нет recved - это char[64]
      Скажите а почему sizeof(buf) неуместно?Я спросил насчет этого у других людей,мне сказали что нормально это....

      • http запрос на с, !*! jd, 03:42 , 16-Июл-04 (3)
        >>>char *buf="GET /index.html HTTP/1.0";

        >Скажите а почему sizeof(buf) неуместно?Я спросил насчет этого у других людей,мне сказали
        >что нормально это....

        Потому, что в данном случае sizeof(buf)=размеру указателя, например на 32-х битной платформе (с которой вы вероятно имеете дело) это будет 4. Можно воспользоваться вызовом strlen(3) или если уж так нравится sizeof, то писать нужно что-то вроде

        #define CMD "GET /index.html HTTP/1.0"
        ...
        send(sock,CMD,sizeof(CMD),0);

        Но это уже IMHO кривота...




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру