如何使用已经存在的 tcp::socket 创建 tcp::iostream?
How to create an tcp::iostream using an already existing tcp::socket?
我什至不确定这个问题是否有意义,但我正在尝试解决以下问题,而无需重写大部分代码。
我有一个 tcp 服务器,它使用 tcp::socket 进行读写,其中包含 boost::asio::async_read_until 和 boost::asio::write 函数。现在有一个用例可以从文件流式传输到此套接字。TCP::IOstream是执行此操作的理想方法;我可以使用当前打开的 tcp::socket 创建此实例吗?
您可以像这样分配底层套接字:
#include <boost/asio.hpp>
#include <iostream>
using boost::asio::ip::tcp;
int main() {
boost::asio::io_service svc;
tcp::socket s(svc);
s.connect(tcp::endpoint {{}, 6767});
tcp::iostream stream;
stream.rdbuf()->assign(tcp::v4(), s.native_handle());
std::cout << stream.rdbuf() << std::flush;
}
相关文章:
- 为什么可以重复使用这个boost::asio::tcp::socket
- 如何从 boost::asio::ssl::stream<boost::asio::ip::tcp::socket> 获取本机套接字文件描述器?
- 如何使用已经存在的 tcp::socket 创建 tcp::iostream?
- 将 std::bind 应用于带有参数 <boost::asio::ip::tcp::socket> 时出错?
- 从 asio::ip::tcp::socket 直接写入 std::string
- 线程安全关闭同步使用的 boost::asio::ip::tcp::socket
- 移动构造函数不使用 boost::asio::ip::tcp::socket 调用
- 自定义套接字继承自boost::asio::ip::tcp::Socket
- boost::asio::tcp::socket 关闭并取消而不调用处理程序
- IMAP:从C++程序发送电子邮件时"Unable to create selectable TCP socket"
- 调用 boost::asio::tcp::socket 方法后async_read处理程序在服务器中返回错误
- TCP-Socket到虚拟机的IP地址
- 是否strand和io对象(如tcp::socket)需要担心相关联的io_service的生命周期?
- boost::asio::ip::tcp::socket中的async_read_some()实际上是如何工作的
- 通过TCP socket发送二进制文件
- Java客户端和c++服务器通过TCP Socket发送和接收
- Using boost::asio::ip::tcp::socket::cancel() and socket::clo
- boost::asio::ip::tcp::socket::cancel和socket::close之间有什么不同
- c++ boost asio tcp socket读取旧数据
- 客户端断开连接时,TCP Socket选择服务器分段错误