【问题标题】:Boost - ASIO vs. IOStreams TCPBoost - ASIO 与 IOStreams TCP
【发布时间】:2012-06-06 03:52:32
【问题描述】:

我是 Boost 的新手。我一直在为 sokcets/networking/TCP 东西寻找一个简单的跨平台解决方案,并找到了 Boost。快速浏览一下,似乎有 两个 TCP 相关类:一个在 Iostreams 中,一个在 Asio 中。
我(非常)确定如果我深入研究两个库的各自文档,我将能够弄清楚每个库的用途,但是有人可以简要解释一下区别是什么,或者每个库的用途是什么?

【问题讨论】:

    标签: c++ boost tcp boost-asio iostream


    【解决方案1】:

    Boost.Iostreams 中有 TCP 流吗?

    ASIO 是一个完整的全功能网络库,支持使用通用回调 API 的异步 I/O。 ip::tcp::iostream 类(它是 ASIO 的一部分)构建在 ASIO 之上,隐藏了手动创建和管理套接字并提供标准 iostream 接口的大部分复杂性。

    【讨论】:

      【解决方案2】:

      我已使用 Boost IOStreams 轻松创建与 std::stream 兼容的流对象。您可以使用它们来创建 TCP 流类,但您将做所有工作来支持 TCP。 IOStreams 只是提供了一个框架来创建流类。

      我还使用 Boost Asio 创建了一个独立的 TCP 服务器。过去使用 Windows 套接字来做同样的事情,我可以告诉你,Asio 让编写 TCP 服务器(和客户端)变得非常容易。我认为 Asio 是你想要的。

      【讨论】:

        【解决方案3】:

        正如其他人所说,Boost.Asio 可能是您想要的。它是系统特定网络内容的优雅且跨平台的包装器。它提供了诸如套接字、IP地址、定时器等构建块。

        但它也为简单的网络交互提供了高级iostream interface。这是simple example

        #include <iostream>
        #include <string>
        #include <boost/asio.hpp>
        
        using boost::asio::ip::tcp;
        
        int main(int argc, char* argv[])
        {
          try
          {
            if (argc != 2)
            {
              std::cerr << "Usage: daytime_client <host>" << std::endl;
              return 1;
            }
        
            tcp::iostream s(argv[1], "daytime");
            if (!s)
            {
              std::cout << "Unable to connect: " << s.error().message() << std::endl;
              return 1;
            }
        
            std::string line;
            std::getline(s, line);
            std::cout << line << std::endl;
          }
          catch (std::exception& e)
          {
            std::cout << "Exception: " << e.what() << std::endl;
          }
        
          return 0;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-08
          • 2021-11-07
          • 1970-01-01
          • 2018-09-18
          相关资源
          最近更新 更多