Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Boost 增压/asio连接,连接被拒绝_Boost_Boost Asio - Fatal编程技术网

Boost 增压/asio连接,连接被拒绝

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

我正在使用libscapi,在尝试与boost::asio::connect建立连接时不断出错。我一直在尝试使用简单的示例(如下面的示例),但总是出现“拒绝连接”错误。我想这一定是个很简单的错误,但我就是不明白

#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;