提振.确保另一方接收到数据
Boost.Asio - Make sure that other party received data
我正在使用boost::asio并向客户端发送列表,并在完成时关闭套接字。不知何故,客户端有时在收到所有内容之前收到文件结束错误。
我猜这与服务器在发送最后一个列表条目后关闭套接字有关。是否有一个简单的方法来解决这个async_send调用处理程序后,数据已成功发送?
还是我的文件结束错误来自其他东西?
Asio是基于TCP和UDP套接字的独立于操作系统的抽象层。它们不能保证其他应用程序已经接收并处理了数据。您将需要在应用程序中包含此逻辑,您可能想要研究OSI模型。
如果您在async_send()
返回后立即关闭套接字,这是不正确的。只有在调用完完成处理程序后才应该关闭它。
相关文章:
- 防止主数据类型C++的隐式转换
- 用于访问容器<T>数据成员的正确 API
- 嵌套在类中时无法设置成员数据
- 如何确保C++函数在定义之前声明(如override关键字)
- 使用流处理接收到的数据
- 尝试使用while循环从文件中读取数据.还必须检查以确保第一个和唯一的值不是-1
- 是否要确保一个线程修改的任何数据类型的共享变量对其他线程可见
- 非阻塞关闭 - 如何确保数据已发送
- 如何确保类的每个数据成员都已复制到其复制构造函数中
- 增强串行化:通过套接字传输确保数据安全
- 如何确保自定义数据的boost::unorderede_set中没有重复
- 如何确保数据刷新到文件 IO (WriteFile()) 上的 HDD(未缓冲)
- C++ 如何确保复制构造函数不会修改原始对象的指针数据成员?
- 如何确保数据类型与C++中需要的数据类型一样大
- 如何确保fwrite后数据在磁盘上
- 如何确保迭代器模板形参与模板类的模板形参具有相同的数据类型
- 如何确保数据结构能适应大文件中的数据
- 困惑如何确保数据在IOStream中"Good"
- 如何确保数据在关闭fstream之前被写入磁盘?
- 提振.确保另一方接收到数据