我是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 1.55.0 asio,TCP,TCP_MAXSEG,哪里?
- 2. boost :: asio tcp async_read永远不会返回
- 3. Boost Asio tcp :: acceptor访问冲突异常
- 4. C++ boost asio tcp socket读取旧数据
- 5. boost asio tcp发送和接收教程
- 6. 使用boost :: asio :: ip :: tcp :: socket作为shared_ptr
- 7. 使用Boost :: asio的TCP/IP客户端
- 8. Boost :: asio阻止Tcp服务器混淆
- 9. boost :: asio扩展TCP套接字
- 10. boost :: asio tcp数据库服务器
- 11. Boost Asio延迟写入TCP套接字
- 12. unget bytes to boost :: asio :: ip :: tcp :: socket
- 13. Boost Asio tcp :: resolver:未找到服务
- 14. 使用boost :: asio配置TCP keep_alive
- 15. boost :: asio :: async_read和boost :: asio :: streambuf
- 16. Boost Asio message_flags
- 17. boost boost :: asio
- 18. boost :: asio set_option error
- 19. 的boost :: ASIO :: ASYNC_WRITE()与升压:: ASIO ::写()
- 20. C++ boost tcp-server
- 21. 的boost :: ASIO检查
- 22. Zlib压缩boost :: iostreams与zlib.NET不兼容
- 23. boost :: asio :: async_read_until问题
- 24. boost :: asio :: async_resolve问题
- 25. Boost ASIO socket io_service.run blocking
- 26. boost :: iostreams管理资源
- 27. boost asio读取缓冲区
- 28. Boost ASIO async_accept编译失败
- 29. C++ Boost :: Thread&Boost :: ASIO内存泄漏
- 30. boost :: asio :: write时出错