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

Ошибка в boost::asio::ip::tcp::iostream stream (&request);

24.05.2018, 20:09. Показов 4942. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Только приступаю к изучению boost::asio, не судите строго.
Программа вычитывает картинку и записывает ее (пока что) в текстовый файл
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
#include "stdafx.h"
#include <boost/asio.hpp>
#include <iostream>
#include <fstream>
 
int main()
{
    const std::string serverName = "yt3.ggpht.com";
    const std::string Picture = "/-Ol2QDt_4RVc/AAAAAAAAAAI/AAAAAAAAAAA/H225Zbgk0YU/s88-c-k-no-mo-rj-c0xffffff/photo.jpg";
    boost::asio::io_service io_service;
    // Get a list of endpoints corresponding to the server name.
    boost::asio::ip::tcp::resolver resolver(io_service);
    boost::asio::ip::tcp::resolver::query query(serverName, "http");
    boost::asio::ip::tcp::resolver::iterator endpoint = resolver.resolve(query);
    // Try each endpoint until we successfully establish a connection.
    boost::asio::ip::tcp::socket socket(io_service);
    socket.connect(*endpoint);
    //stream.connect(serverName, "http");
    boost::asio::streambuf request;
    boost::asio::ip::tcp::iostream stream (&request);
    stream << "GET " << Picture << " HTTP/1.0\r\n";
    stream << "Host:" << serverName << "\r\n";
    stream << "Accept: */*\r\n";
    stream << "Connection: close\r\n\r\n";
    //stream.flush();
    //std::cout << stream.rdbuf();
    boost::asio::write(socket, request);
    boost::asio::streambuf response;
    boost::asio::read_until(socket, response, "\r\n\r\n");
    std::ofstream file;
    file.open("text.txt", std::ios::binary);
    std::string responseLine;
    while (boost::asio::read(socket, response, boost::asio::transfer_at_least(1)))
    {
        file << &response;
    }
    file.close();
    //std::system("pause");
    return 0;
}
На этапе
C++
1
boost::asio::ip::tcp::iostream stream (&request);
выдает ошибку
C++
1
 error C2672: "boost::asio::basic_socket_streambuf<Protocol,Clock,WaitTraits>::connect_to_endpoints": не найдена соответствующая перегруженная функция
Подскажите плиз в чем проблема? брал пример с https://stackoverflow.com/ques... rom-server
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2018, 20:09
Ответы с готовыми решениями:

boost::asio::ip::tcp::resolver::close() - проблемы
Есть код клиента. Выложу только значащие моменты. Проблема заключается в следующем - при...

boost::asio::ip::tcp::socket::async_connect не вызывает handler
Пытаюсь подключиться к серверу: void CTcpClient::Connect( const std::string &amp; IpAddress_, int...

Boost.asio ошибка в socket.connect
Подскажите почему коннект выдает ошибку? #include &lt;QCoreApplication&gt; #include &lt;boost/asio.hpp&gt; ...

Asio deadline_timer и tcp::socket отослать асинхоронно по tcp по таймеру
Здравствуйте. Цель по tcp соединению отсылать через равные промежутки времени сообщение одно и...

4
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
25.05.2018, 14:24 2
Лучший ответ Сообщение было отмечено Mastering как решение

Решение

так вроде работает
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
#include <boost/asio.hpp>
#include <iostream>
#include <fstream>
#include <cstdlib>
 
int main()
{
    system("chcp 1251");
    try
    {
        const std::string serverName = "yt3.ggpht.com";
        const std::string Picture = "/-Ol2QDt_4RVc/AAAAAAAAAAI/AAAAAAAAAAA/H225Zbgk0YU/s88-c-k-no-mo-rj-c0xffffff/photo.jpg";
        boost::asio::io_service io_service;
        // Get a list of endpoints corresponding to the server name.
        boost::asio::ip::tcp::resolver resolver(io_service);
        boost::asio::ip::tcp::resolver::query query(serverName, "http");
        boost::asio::ip::tcp::resolver::iterator endpoint = resolver.resolve(query);
        // Try each endpoint until we successfully establish a connection.
        boost::asio::ip::tcp::socket socket(io_service);
        socket.connect(*endpoint);
        //stream.connect(serverName, "http");
        boost::asio::streambuf buf;
        std::ostream ost(&buf);
        ost << "GET " << Picture << " HTTP/1.0\r\n";
        ost << "Host:" << serverName << "\r\n";
        ost << "Accept: */*\r\n";
        ost << "Connection: close\r\n\r\n";
        //stream.flush();
        //std::cout << stream.rdbuf();
        boost::asio::write(socket, buf);
        size_t hLen = boost::asio::read_until(socket, buf, "\r\n\r\n");
        buf.consume(hLen); // отбрасываем http-хедер ответа
        std::ofstream ofs{ "text.jpg", std::ios::binary };
        boost::system::error_code ec;
        while (boost::asio::read(socket, buf, boost::asio::transfer_at_least(1), ec) && ec == boost::system::errc::success)
        {
            ofs << &buf;
            buf.consume(buf.size());
        }
        ofs.close();
    }
    catch (std::exception const& exc)
    {
        std::cerr << "Exception: " << exc.what() << std::endl;
    }
}
1
1 / 1 / 0
Регистрация: 20.04.2018
Сообщений: 58
27.05.2018, 10:51  [ТС] 3
igorrr37 Спасибо, компилирует! А в чем косяк был?
0
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
27.05.2018, 13:25 4
Mastering, ostream судя по всему и с 35 строчки
0
1 / 1 / 0
Регистрация: 20.04.2018
Сообщений: 58
28.05.2018, 18:08  [ТС] 5
Да, я идею уловил, и спасибо огромное!
Но почему нельзя так:
C++
1
boost::asio::ip::tcp::iostream stream (&request);
а можно так:
C++
1
std::ostream ost(&buf);
0
28.05.2018, 18:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.05.2018, 18:08
Помогаю со студенческими работами здесь

boost::asio
начал ковырять буст. Возник вопрос с созданием клинт-серверного приложения. Для ознакомления хочу...

Boost.asio
Добрый день. Я только начал знакомство с boost.asio и при использовании примеров с офф.сайта...

boost/asio
Кто тестил asio в Вuilder-е? Код использовал отсюда...

Boost Asio C++
Добрый день. Юзаю этот ( http://www.boost.org/ ) проект. Нужна помощь с документаций...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru