在没有物理连接的情况下写入时,boost async tcp客户端不会返回错误

时间:2016-03-08 17:59:59

标签: c++ boost tcp

我正在尝试使用阻塞套接字的示例: http://www.boost.org/doc/libs/1_52_0/doc/html/boost_asio/example/timeouts/blocking_tcp_client.cpp

TEST

我想测试它的行为,所以我试图拔下我的以太网线并继续每秒写一次。

行为

write 函数继续发送消息而不会捕获任何错误大约20秒,然后最终捕获错误(在tcp超时?)。我将自己的截止日期定义为1。

问题

预计在大约1秒后,在第一次调用 write 函数时会出现错误。为什么我在第一次通话时没有发现错误,而是在20秒之后?还有办法吗?

1 个答案:

答案 0 :(得分:1)

这是TCP的预期,你无能为力。 TCP不保证交付,它会尽最大努力确保交付。

如果您希望保证交付,我们必须在申请代码中确认您的提交。