Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 08.03.2018
Сообщений: 5
1

HTTP запрос

10.03.2018, 13:29. Показов 745. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написал маленькую программку http запроса, но он не подключается. Плюс к этому мне нужно получать какие-либо данные, которые должны заноситься в вектор. Не знаю, как это сделать. Помогите, кто-нибудь, разобраться, пожалуйста.
Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#pragma comment(lib, "WS2_32.lib")
 
#include <iostream>
#include <sys/types.h>
#include <winsock2.h>
#include <memory.h>
#include <conio.h>
 
 
int main()
{
    WSADATA wData;
    struct sockaddr_in addr, serv_addr;
    SOCKET sock;
    if (WSAStartup(MAKEWORD(1, 1), &wData) != 0)
    {
        std::cout << "socket not initialized\n";
    }
    std::cout << "socket initialized\n";
 
    sock = socket(AF_INET, SOCK_STREAM, 0);
    if (sock == -1)
    {
        std::cout << "socket not created\n";
    }
 
    addr.sin_family = AF_INET;
    addr.sin_port = htons(80);
    addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
    bind(sock, (struct sockaddr *)&addr, sizeof(addr));
 
    char HostName[1024];
    DWORD HostIP = 0;
    LPHOSTENT lphost;
    gethostname(HostName, 1024);
    lphost = gethostbyname(HostName);
    serv_addr.sin_family = AF_INET;
    memcpy((char*)&serv_addr.sin_addr, lphost->h_addr, lphost->h_length);
    serv_addr.sin_port = htons(80);
 
    int error;
    if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr))<0)
    {
        std::cout << "connect error\n";
        error = WSAGetLastError();
        std::cout << error << "\n";
        _getch();
        return 1;
    }
    std::cout << "connect success\n";
 
 
    char message1[10];
    char message2[10];
    char message3[10];
 
    char buff[15];
 
    std::cout << "insert value\n";
    std::cin >> message1;
    std::cin >> message2;
    std::cin >> message3;
 
    send(sock, message1, sizeof(message1), 0);
    send(sock, message2, sizeof(message2), 0);
    send(sock, message3, sizeof(message3), 0);
 
    recv(sock, buff, sizeof(buff), 0);  //3 param -sizeof accepted data
    std::cout << "answer " << buff << "\n";
    recv(sock, buff, sizeof(buff), 0);
    std::cout << "answer " << buff << "\n";
    _getch();
 
    shutdown(sock, 2);
    closesocket(sock);
    WSACleanup();
 
    system("pause");
    return 0;
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.03.2018, 13:29
Ответы с готовыми решениями:

HTTP GET запрос
Здравствуйте. Уважаемые форумчане,помогите пожалуйста составить запрос серверу для получения...

Http запрос
Пожалуйста, помогите написать этот чертов запрос, молю не поскупитесь на коменты-пояснения. Мне...

HTTP запрос
Здравствуйте уважаемые программисты! Помогите новичку правильным кодом. Нужно отправить НТТР запрос...

HTTP GET-запрос и keep-alive
Есть HTTP keep-alive соединение. Через него надо сделать серию GET-запросов. Со стороны клиента это...

1
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,424
10.03.2018, 22:02 2
Qysr,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int get_addr(char *host_name)
{
    int res = -1;
 
    HOSTENT *phe = gethostbyname(host_name);
    if (phe)
        for (int i = 0; i < 4; i++)
            ((BYTE *)&res)[i] = phe->h_addr_list[0][i];
 
    return res;
}
...
        SOCKADDR_IN sa;
        sa.sin_family = AF_INET;
        sa.sin_port = htons(port);
        sa.sin_addr.S_un.S_addr = inet_addr(addr.c_str()); // если это IP
        sa.sin_addr.S_un.S_addr = get_addr((char *)addr.c_str()); // если это имя сайта
0
10.03.2018, 22:02
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.03.2018, 22:02
Помогаю со студенческими работами здесь

HTTP-POST запрос.
Ниже приведенный код отправляет POST запрос. Проблема в том, что в ответ принимаются не все...

[MFC]HTTP POST запрос
Здравствуйте! Есть такой алгоритм пост запроса на сервер Код: CString strHeaders =...

HTTP запрос через сокеты
Делаю HTTP GET-запрос к google.com &quot;GET / HTTP/1.1\r\n&quot; &quot;Host: www.google.com\r\n&quot; ...

HTTP запрос - активировать аккаунт
Столкнулся с проблемой, что надо открыть сайт, но не в браузере, а просто чтобы выполнилось...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Как работать с Kafka в Go (Golang)
bytestream 22.01.2025
Apache Kafka представляет собой распределенную платформу потоковой передачи данных, которая произвела революцию в области обработки событий и интеграции микросервисов. Эта система, изначально. . .
Как использовать RabbitMQ в Go (Golang)
bytestream 22.01.2025
RabbitMQ представляет собой надежный и широко используемый брокер сообщений, который играет ключевую роль в построении современных распределенных систем и микросервисной архитектуры. В основе работы. . .
Как преобразовать список списков в простой список в Python
bytestream 22.01.2025
При работе с Python разработчики часто сталкиваются с необходимостью обработки сложных структур данных, среди которых особое место занимают вложенные списки. Эти структуры представляют собой списки,. . .
Что такое GUID / UUID и как их создать
bytestream 22.01.2025
В мире разработки программного обеспечения существует постоянная потребность в уникальной идентификации объектов, записей и ресурсов. Эта задача становится особенно актуальной в распределенных. . .
Как добавить пустую директорию в репозиторий Git
bytestream 22.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с ситуацией, когда необходимо сохранить пустую директорию в репозитории. Данная задача может показаться простой на первый. . .
Как валидировать адрес email в JavaScript
bytestream 22.01.2025
JavaScript, как основной язык веб-разработки, предоставляет разработчикам множество инструментов для реализации эффективной валидации email-адресов. От простых встроенных решений до сложных. . .
Как заменить все вхождения подстроки в JavaScript
bytestream 22.01.2025
Строки в JavaScript представляют собой неизменяемые последовательности символов, что делает их обработку особенно интересной с точки зрения оптимизации и выбора правильного подхода к решению задач. . . .
Управление версиями пакетов в Node.js. В чем разница между тильдой (~) и кареткой (^) в package.json
bytestream 22.01.2025
В современной разработке программного обеспечения управление версиями пакетов играет ключевую роль в обеспечении стабильности и надежности проектов. Node. js, как одна из самых популярных платформ для. . .
Аутентификация на сайте с помощью формы
bytestream 21.01.2025
В современном цифровом мире безопасная аутентификация становится краеугольным камнем защиты веб-приложений и пользовательских данных. Каждый день миллионы людей используют различные онлайн-сервисы,. . .
Как получить индекс в цикле for в Python
bytestream 21.01.2025
При работе с коллекциями данных в Python часто возникает необходимость не только получить доступ к элементам последовательности, но и знать их позицию в процессе итерации. Индексация в циклах. . .
Как определить адрес, из которого локальный репозиторий Git был клонирован
bytestream 21.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемой частью рабочего процесса. При работе с Git разработчики часто сталкиваются с необходимостью. . .
Какая разница между операторами == и === в сравнениях в JavaScript
bytestream 21.01.2025
В мире веб-разработки JavaScript занимает особое место как динамический язык программирования, предоставляющий разработчикам широкий набор инструментов для создания интерактивных веб-приложений. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru