gpt4 book ai didi

c++ - boost::asio 是否支持本地内存连接?

转载 作者:行者123 更新时间:2023-11-30 02:35:04 24 4
gpt4 key购买 nike

我正在考虑创建一个具有可选独立操作模式的服务器/客户端应用程序。

在这种独立模式下,它不会创建真正的 TCP 服务器/客户端,只有 2 个线程,使用内存缓冲区相互通信。

根据 ASIO 文档,我确信它可以使用通用流协议(protocol)和自定义协议(protocol)实现来实现,但是是否有更简单或已经存在的方法来实现这一点?

最佳答案

不,Asio 对此功能没有一流的支持。

但是,Asio 确实支持一些平台特定的面向流的类型,这些类型与 Asio 的 I/O 操作一起工作(read()async_read()write( )async_write()read_until()async_read_until() 自由函数:

  • local::stream_protocol::socket使用 UNIX 域套接字(本地套接字)。这些将提供最接近 TCP 套接字的奇偶校验。程序可以通过 BOOST_ASIO_HAS_LOCAL_SOCKETS 宏测试他们的平台是否支持此功能。查看UNIX Domain Sockets概述了解更多详情。如果应用程序协议(protocol)本质上是基于消息的并且使用 TCP 来保证其可靠性,那么可以考虑在本地套接字上使用 UDP,因为它们可以保证可靠性。
  • POSIX Stream-Oriented File Descriptors :管道、标准输入和输出以及各种设备,但不包括常规文件。程序可以通过 BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR 宏测试他们的平台是否支持此功能。
  • Windows Stream-Oriented HANDLEs : 命名管道。这需要使用 I/O 完成端口后端。程序可以通过 BOOST_ASIO_HAS_WINDOWS_STREAM_HANDLE 宏测试他们的平台是否支持此功能。

请注意,这些通常用于进程间通信,因此其他程序可能会在本地访问它们。

关于c++ - boost::asio 是否支持本地内存连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34043229/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com