我想通过 TCP 发送多个字符串,而不是先将它们组合成一个大字符串,据我了解,ASIO 的 scatter-gather I/O 接口可以做到这一点。但是,我一定做错了什么,因为我的实现不断遇到内存错误。下面的代码片段(可编译和可运行)在 I 时返回一个乱码字符串telnet localhost 11211
:
#include <vector>
#include <string>
#include <boost/asio.hpp>
using namespace std;
using namespace boost::asio;
using namespace boost::asio::ip;
int main() {
io_service service;
tcp::acceptor acceptor(service, tcp::endpoint(tcp::v4(), 11211));
tcp::socket sock(service);
acceptor.accept(sock);
if (!acceptor.is_open()) return 1;
string s = "this is a really long string";
vector<const_buffer> vec;
vec.push_back(buffer(s));
write(sock, buffer(vec));
}
但是,当我这样做时它工作正常write(sock, buffer("this is a really long string"))
。我在这里想念什么?