gpt4 book ai didi

c++ - Boost ASIO async_accept 编译失败

转载 作者:太空狗 更新时间:2023-10-29 21:30:21 24 4
gpt4 key购买 nike

伙计...认为在 Boost 中使用 ASIO 会简单直观。 :P

我终于开始明白了,但我遇到了一些麻烦。这是一个片段。我在 async_accept 行有几个编译器错误。我究竟做错了什么? :P

我的代码基于此页面: http://www.boost.org/doc/libs/1_43_0/doc/html/boost_asio/tutorial/tutdaytime3/src.html

错误:

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

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

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, ...

关于c++ - Boost ASIO async_accept 编译失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3003022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com