@EndXAK

Как исправить ошибку с шаблонами BOOST?

Попробовал поработать с Boost, написать синхронный клиент на Boost::Asio. Я про него знал, но никогда не работал. Все работы с сетью производил на низком уровне API.

Вышла такая проблема при компиляции:
Листинг сборки
g++ index.cpp -o main
In file included from /usr/include/boost/asio/write.hpp:1246,
                 from /usr/include/boost/asio/buffered_write_stream.hpp:28,
                 from /usr/include/boost/asio/buffered_stream.hpp:22,
                 from /usr/include/boost/asio.hpp:43,
                 from index.cpp:1:
/usr/include/boost/asio/impl/write.hpp: В конкретизации «std::size_t boost::asio::detail::write_buffer_sequence(SyncWriteStream&, const ConstBufferSequence&, const ConstBufferIterator&, CompletionCondition, boost::system::error_code&) [with SyncWriteStream = int(int, int, int); ConstBufferSequence = boost::asio::const_buffers_1; ConstBufferIterator = const boost::asio::const_buffer*; CompletionCondition = boost::asio::detail::transfer_all_t; std::size_t = long unsigned int]»:
/usr/include/boost/asio/impl/write.hpp:70:39:   требуемый из «std::size_t boost::asio::write(SyncWriteStream&, const ConstBufferSequence&, CompletionCondition, boost::system::error_code&, typename std::enable_if<boost::asio::is_const_buffer_sequence<ConstBufferSequence>::value>::type*) [with SyncWriteStream = int(int, int, int); ConstBufferSequence = boost::asio::const_buffers_1; CompletionCondition = boost::asio::detail::transfer_all_t; std::size_t = long unsigned int; typename std::enable_if<boost::asio::is_const_buffer_sequence<ConstBufferSequence>::value>::type = void]»
/usr/include/boost/asio/impl/write.hpp:82:40:   требуемый из «std::size_t boost::asio::write(SyncWriteStream&, const ConstBufferSequence&, typename std::enable_if<boost::asio::is_const_buffer_sequence<ConstBufferSequence>::value>::type*) [with SyncWriteStream = int(int, int, int); ConstBufferSequence = boost::asio::const_buffers_1; std::size_t = long unsigned int; typename std::enable_if<boost::asio::is_const_buffer_sequence<ConstBufferSequence>::value>::type = void]»
index.cpp:36:53:   required from here
/usr/include/boost/asio/impl/write.hpp:54:23: ошибка: запрос элемента «write_some» в «s», имеющего не классовый тип «int(int, int, int)»
   54 |         tmp.consume(s.write_some(tmp.prepare(max_size), ec));
      |                     ~~^~~~~~~~~~


Мой код
#include <boost/asio.hpp>
#include <iostream>
#include <string>
#include <sstream>
#include <boost/beast/http.hpp>

namespace asio = boost::asio;
namespace http = boost::beast::http;

int main(){
    int port;
    std::string ip;

	std::cout << "DoS" << std::endl;
    std::cout << "Ip: ";
    std::cin >> ip;
    std::cout << "Port: ";
    std::cin >> port;

    asio::io_service service;
    asio::ip::tcp::endpoint ep(asio::ip::address::from_string(ip), port);
    asio::ip::tcp::socket sock(service);

    sock.connect(ep);

    http::request<http::string_body> req{http::verb::get, "/", 11};
    req.set(http::field::host, "scratch.mit.edu");
    req.set(http::field::user_agent, "Mozzila");

    std::ostringstream oss;
    oss << req;
    std::string str = oss.str();

    unsigned long long i;
    while(i < 1000000){     
        asio::write(socket, asio::buffer(str + "\n"));
        i++;
    }
}
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы