Проблемы с socket.async_accept() в boost::asio

127
15 октября 2019, 05:40

Пишу асинхронный TCP сервер

#include <iostream>
#include <boost/asio.hpp>
#include <string>
#include <clocale>
using namespace boost::asio;
using namespace std;
class tcp_server
{
private:
    ip::tcp::socket socket;
    ip::tcp::acceptor acceptor;
    int clientCount = 0;
    int port = 0;
    enum { max_lenght = 256 };
    char buff[max_lenght];
public:
    tcp_server(io_service& service, int port) : socket(service), acceptor(service, ip::tcp::v4(), port)
    {
        this->port = port;
    }
    void do_accept()
    {
        acceptor.async_accept(socket, accept_handler);
    }
    void accept_handler(const boost::system::error_code& error)
    {
        if (!error)
        {
            // Accept succeeded.
        }
    }
};
int main(int argc, char *argv[])
{
    try
    {
        setlocale(LC_ALL, "Rus");
        io_service service;
        tcp_server(service, 5000);
        service.run();
    }
    catch (exception& ex)
    {
        cout << "Исключение: " << ex.what();
        system("pause");
    }
    return 0;
}

Однако получаю набор следующих ошибок

Как исправить эту проблему?

Answer 1
acceptor.async_accept(
    socket, 
    [this](const boost::system::error_code& error) {
        this->accept_handler(error);
    }
);
READ ALSO
Ошибка линковки в Qt5 {Пустой проект}

Ошибка линковки в Qt5 {Пустой проект}

При попытке запустить вот такой код :

119
Как правильно составить запрос в retrofit?

Как правильно составить запрос в retrofit?

Имею api формата localhost/api/?authmethod={"username" : "value1", "password" : "value2"}

113
Javac не генерирует warning на @Deprecated

Javac не генерирует warning на @Deprecated

Компилирую такой код

92