我是Boost的新手。我正在为sokcets/networking/TCP等寻找一个简单的跨平台解决方案,并发现了Boost。快速窥视显示似乎有两个 TCP相关类:一个在Iostreams和一个在Asio。
我很确定,如果我深入了解两个库的相应文档,我将能够弄清楚每个库的使用情况,但是有人可以简单地解释它们之间的区别,或者每个库的用途是什么?Boost - ASIO与IOStreams TCP
2
A
回答
4
Boost.Iostreams中是否有TCP流?
ASIO是一个完整的全功能网络库,它支持使用通用回调API的异步I/O。 ip::tcp::iostream
类(它是ASIO的一部分)建立在ASIO之上,隐藏了手动创建和管理套接字以及提供标准iostream接口的复杂性。
3
我使用Boost IOStreams来轻松创建std :: stream兼容的流对象。你可以使用它们来创建一个TCP流类,但是你将会做所有的工作来支持TCP。 IOStreams只是提供了一个创建流类的框架。
我也用Boost Asio来创建一个独立的TCP服务器。过去曾经使用Windows套接字来做同样的事情,我可以告诉你,Asio使写TCP服务器(和客户端)变得非常简单。我认为阿西欧是你想要的。
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;
}
相关问题
- 1. boost :: asio tcp async_read永远不会返回
- 2. Boost Asio延迟写入TCP套接字
- 3. Boost asio中的TCP客户端
- 4. Boost Asio tcp :: resolver:未找到服务
- 5. C++ boost asio tcp socket读取旧数据
- 6. 使用boost :: asio :: ip :: tcp :: socket作为shared_ptr
- 7. unget bytes to boost :: asio :: ip :: tcp :: socket
- 8. Boost :: asio阻止Tcp服务器混淆
- 9. 使用Boost :: asio的TCP/IP客户端
- 10. boost :: asio :: async_read和boost :: asio :: streambuf
- 11. Boost Asio message_flags
- 12. 的boost :: ASIO :: ASYNC_WRITE()与升压:: ASIO ::写()
- 13. C++ boost tcp-server
- 14. 的boost :: ASIO检查
- 15. Zlib压缩boost :: iostreams与zlib.NET不兼容
- 16. boost :: asio :: async_read_until问题
- 17. boost :: asio :: async_resolve问题
- 18. Boost ASIO socket io_service.run blocking
- 19. boost :: iostreams管理资源
- 20. boost asio读取缓冲区
- 21. Boost ASIO async_accept编译失败
- 22. boost :: asio和socket拥有
- 23. 升压asio tcp ip写入
- 24. TCPClient boost :: asio :: io_service post not firing
- 25. boost asio和shared_ptrs的扩散
- 26. 的boost :: ASIO async_send错误
- 27. boost asio io_service.run()
- 28. Boost :: asio和async_read
- 29. Boost asio udp waitForReadyRead
- 30. Boost asio and winhttp