我无法与boost :: asio :: connect建立连接

时间:2016-10-22 17:51:16

标签: c++ boost network-programming boost-asio

我目前正尝试使用boost asio进行网络编程。

我决定尝试一个简单的连接,但我已经遇到了麻烦。为了开始,我只想在服务器和客户端之间建立连接,两者都在同一台机器上运行。

这是我的服务器代码:

try
{
    tcp::endpoint endpoint(tcp::v4(), port);
    tcp::acceptor acceptor(m_io_service, endpoint);

    while (1) {
        tcp::socket socket(m_io_service);

        acceptor.accept(socket);

        std::cout << "Someone connected!";
    }

}
catch (std::exception& e)
{
    std::cerr << e.what() << std::endl;
}

请注意,我的io_service是一个成员变量,而port等于10112。

要跟进,这是我的客户代码:

try
{
    tcp::resolver resolver(m_io_service);
    tcp::resolver::query query(tcp::v4(), "10112");
    tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);

    tcp::socket socket(m_io_service);
    boost::asio::connect(socket, endpoint_iterator);

    std::cout << "Client found server.";
}
catch (std::exception& e)
{
    std::cout << "Exception: " << e.what() << std::endl;
}

这是我到目前为止从几个教程中得到的。

但是,到目前为止,我无法建立连接。我的猜测是我的查询提供了一些错误的值,因为在两种情况下我得到一个大小为1的迭代器 - 服务器正在上升和下降。

看起来它最终会得到一些默认值,这与我的实际服务器不相似,即使它已经上升了。这导致我猜测查询数据可能出错。

但是,我真的不知道如何从这里开始。

你对我有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您是否启动了io_service对象:http://www.boost.org/doc/libs/1_42_0/doc/html/boost_asio/reference/io_service/run.html

你是否指定了一个工作对象来保持它运行?