是否boost::asio支持本地内存连接
Does boost::asio support local in-memory connections?
我正在考虑创建一个具有可选独立操作模式的服务器/客户端应用程序。
在这种独立模式下,它不会创建一个真正的TCP服务器/客户端,只有两个线程,使用内存缓冲区相互通信。
基于ASIO文档,我确信可以使用通用流协议和自定义协议实现,但有更简单或现有的方法吗?
不,Asio对该功能没有一流的支持。
然而,Asio确实支持一些特定于平台的面向流的类型,这些类型与Asio的I/O操作(read()
、async_read()
、write()
、async_write()
、read_until()
和async_read_until()
自由函数)配合使用:
- local::stream_procol::socket使用UNIX域套接字(本地套接字)。这将提供与TCP套接字最接近的奇偶校验。程序可以通过
BOOST_ASIO_HAS_LOCAL_SOCKETS
宏测试其平台是否支持此功能。有关更多详细信息,请参阅UNIX域套接字概述。如果应用程序协议本质上是基于消息的,并且为了其可靠性而使用TCP,那么值得考虑在本地套接字上使用UDP,因为它们保证了可靠性 - POSIX面向流的文件描述符:管道、标准输入和输出以及各种设备,但不是常规文件。程序可以通过
BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR
宏测试其平台是否支持此功能 - Windows面向流句柄:命名管道。这需要使用I/O完成端口后端。程序可以通过
BOOST_ASIO_HAS_WINDOWS_STREAM_HANDLE
宏测试其平台是否支持此功能
请注意,这些通常用于进程间通信,因此其他程序可能会在本地访问它们。
相关文章:
- 将字符串存储在c++中的稳定内存中
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- Win32编译器选项和内存分配
- 当vector是tje全局变量时,c++中vector的内存管理
- 带内存和隔离功能的SQLite
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 迭代时从向量和内存中删除对象
- 当套接字连接断开时检测C/C++Unix
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 从新分配的内存中连接到对象
- 对等方断开连接后未释放 SSL 内存
- PostgreSQL在DB服务器中消耗更多内存,以进行长期运行的连接
- 连接数组,数组 1 内存消失C++
- Qt5 新信号到 lambda 连接内存泄漏
- 使用 boost::asio SSL 服务器减少每个连接的内存使用量
- QTcpServer 中的内存泄漏,在不同线程中参与连接
- 是否boost::asio支持本地内存连接
- 是否可以以只读模式连接到内存中的sqlite数据库?
- OpenCv错误在C包装为imread: QNativeImage:无法连接到共享内存段
- 我试图打印强连接的组件,但我一直得到内存错误