简体   繁体   English

Boost ASIO async_accept编译失败

[英]Boost ASIO async_accept compilation fails

Man... thought using ASIO in Boost was going to be easy and intuitive. 男人......想在Boost中使用ASIO会变得简单直观。 :P :P

I am starting to get it finally but I am having some trouble. 我最终开始得到它,但我遇到了一些麻烦。 Here's a snippet. 这是一个片段。 I am having several compiler errors on the async_accept line. 我在async_accept行上遇到了几个编译器错误。 What am I doing wrong? 我究竟做错了什么? :P :P

I've based my code off of this page: http://www.boost.org/doc/libs/1_43_0/doc/html/boost_asio/tutorial/tutdaytime3/src.html 我的代码基于此页面: http//www.boost.org/doc/libs/1_43_0/doc/html/boost_asio/tutorial/tutdaytime3/src.html

Errors: 错误:

Error 1 error C2780: 'void boost::asio::basic_socket_acceptor::async_accept(boost::asio::basic_socket &,boost::asio::ip::basic_endpoint &,AcceptHandler)' : expects 3 arguments - 2 provided e:\\schoolcode\\senior project\\cplusplusport\\cplusplusport\\alexsocket.cpp 36 错误1错误C2780:'void boost :: asio :: basic_socket_acceptor :: async_accept(boost :: asio :: basic_socket&,boost :: asio :: ip :: basic_endpoint&,AcceptHandler)':需要3个参数 - 2个提供e :\\ schoolcode \\ senior project \\ cplusplusport \\ cplusplusport \\ alexsocket.cpp 36

Error 2 error C2784: 'void boost::asio::basic_socket_acceptor::async_accept(boost::asio::basic_socket &,AcceptHandler)' : could not deduce template argument for 'boost::asio::basic_socket &' from 'boost::asio::ip::tcp::socket *' e:\\schoolcode\\senior project\\cplusplusport\\cplusplusport\\alexsocket.cpp 36 错误2错误C2784:'void boost :: asio :: basic_socket_acceptor :: async_accept(boost :: asio :: basic_socket&,AcceptHandler)':无法从'boost中推断'boost :: asio :: basic_socket&'的模板参数:: asio :: ip :: tcp :: socket *'e:\\ schoolcode \\ senior project \\ cplusplusport \\ cplusplusport \\ alexsocket.cpp 36

bool TestSocket::StartListening(int port)
{
    bool didStart = false;

    if (!this->listening)
    {
        //try to listen
        acceptor = new tcp::acceptor(this->myService, tcp::endpoint(tcp::v4(), port));
        didStart = true; //probably change?
        tcp::socket* tempNewSocket = new tcp::socket(this->myService);
        acceptor->async_accept(tempNewSocket, boost::bind(&TestSocket::NewConnection, this, tempNewSocket, boost::asio::placeholders::error) );
    }
    else //already started!
        return false;

    this->listening = didStart;
    return didStart;
}

void TestSocket::NewConnection(tcp::socket* s, const boost::system::error_code& error)
{

}

async_accept期望对套接字的引用,而不是指针,所以试试

acceptor->async_accept(*tempNewSocket, ...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM