gpt4 book ai didi

c++ - 如何确保远程对等方在调用 asio 套接字 close() 函数之前接收到所有数据

转载 作者:行者123 更新时间:2023-11-28 08:03:20 28 4
gpt4 key购买 nike

问题是当我调用 asio 套接字函数 close() 来关闭套接字时, 之前发送的数据都丢失了!

最佳答案

要确保在调用 close 之前所有数据都被写入,您应该使用 io_service 的事件循环。

看看 asio 的 chat client作为如何操作的示例:

void write(const chat_message& msg)
{
io_service_.post(boost::bind(&chat_client::do_write, this, msg));
}

void close()
{
io_service_.post(boost::bind(&chat_client::do_close, this));
}

通过发布对事件循环的实际写入,您正在委派确保一切按正确顺序发生的工作。

如果您想在关闭套接字之前确保远程端点已收到所有内容,则需要构建某种协议(protocol),即让远程端点发送一条消息来确认。

关于c++ - 如何确保远程对等方在调用 asio 套接字 close() 函数之前接收到所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10845491/

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