Boost 增压/asio连接,连接被拒绝
我正在使用libscapi,在尝试与boost::asio::connect建立连接时不断出错。我一直在尝试使用简单的示例(如下面的示例),但总是出现“拒绝连接”错误。我想这一定是个很简单的错误,但我就是不明白Boost 增压/asio连接,连接被拒绝,boost,boost-asio,Boost,Boost Asio,我正在使用libscapi,在尝试与boost::asio::connect建立连接时不断出错。我一直在尝试使用简单的示例(如下面的示例),但总是出现“拒绝连接”错误。我想这一定是个很简单的错误,但我就是不明白 #include <boost/asio.hpp> #include <iostream> int main(int argc, char* argv[]) { boost::asio::io_service io_service; boo
#include <boost/asio.hpp>
#include <iostream>
int main(int argc, char* argv[]) {
boost::asio::io_service io_service;
boost::asio::ip::tcp::endpoint endpoint;
boost::asio::ip::tcp::resolver resolver(io_service);
boost::asio::ip::tcp::resolver::query query("www.boost.org", "http");
boost::asio::ip::tcp::resolver::iterator iter = resolver.resolve(query);
boost::asio::ip::tcp::resolver::iterator end; // End marker.
while (iter != end)
{
boost::asio::ip::tcp::endpoint endpoint = *iter++;
std::cout << endpoint << std::endl;
}
boost::asio::ip::tcp::socket socket(io_service);
socket.connect(endpoint);
}
#包括
#包括
int main(int argc,char*argv[]){
boost::asio::io_服务io_服务;
boost::asio::ip::tcp::endpoint;
boost::asio::ip::tcp::解析器解析器(io_服务);
boost::asio::ip::tcp::resolver::query查询(“www.boost.org”、“http”);
boost::asio::ip::tcp::resolver::iterator iter=resolver.resolve(查询);
boost::asio::ip::tcp::resolver::iterator end;//结束标记。
while(iter!=结束)
{
boost::asio::ip::tcp::endpoint=*iter++;
std::cout您正在为connect
传递默认构造的端点,这是无效的。
当您拥有由[iter,end)
迭代器指定的端点列表时,您应该检查将其传递给连接的每个端点:
boost::asio::ip::tcp::socket socket(io_service);
while (iter != end)
{
boost::asio::ip::tcp::endpoint endpoint = *iter++;
std::cout << endpoint << std::endl;
boost::system::erroc_code err;
socket.connect(endpoint,err);
if ( !err ) // there is no error
{
// connection is established, we can break loop
break;
}
else {
std::cout << "ups, we have problem" << std::endl;
}
}
boost::asio::ip::tcp::socket套接字(io\u服务);
while(iter!=结束)
{
boost::asio::ip::tcp::endpoint=*iter++;
std::coutboost asio TCP Daily client示例假定您可以访问在某些服务器上默认端口13上运行的日间服务。如果服务器没有在端口13上运行,您将收到“connection Rejected”(连接被拒绝)消息
要在本地测试该示例,必须首先安装xinetd(Debian 10-Buster),在文件/etc/xinetd.d/daily中启用“tcp”日间服务,并使用“sudo systemctl restart xinetd.service”重新启动xinetd。FreeBSD Unix使用inetd。日间服务运行后,执行boost示例。输入“localhost”或“127.0.0.1”在运行示例时为“主机”。在asio内部的某个地方,tcp::resolver将文本“Dayer”映射到端口13
示例的后半部分“TCP Daily server”假设您没有在端口13上运行的本地服务器。“sudo systemctl stop xinetd.service”或禁用“TCP”Daily服务并如上所述重新启动xinetd。如果您获得“bind:权限被拒绝”,则可能需要使用sudo来运行服务器示例。服务器在窗口中运行后,请打开其他窗口,然后再次运行客户端示例
boost::asio::ip::tcp::socket socket(io_service);
boost::system::error_code err;
boost::asio::connect(socket,iter,end,err);
if (!err)
std::cout << "connected" << std::endl;