【发布时间】:2020-05-29 11:45:43
【问题描述】:
我从这个讨论中了解到boost::asio::async_write 只将数据写入内核缓冲区。这并不意味着对等方已收到数据。但是,如果我要发送大数据包,假设每个数据包 200000 字节,然后我拉动网线以突然终止连接。它是否还会继续报告每个async_write 写入内核缓冲区的 200000 字节?我的测试表明它没有。它放弃了像 200000 字节这样的大缓冲区,并且不报告所有发送的字节。但如果它是一个像 30-40 字节这样的小缓冲区,它会继续报告好吗?
问题:
提出这个问题的主要目的是: 是否有一个底层缓冲区大小在某一时刻被async_write 填满那现在它不能再写了,因为早先的计划数据还没有出去?如果是,那么这个底层缓冲区的大小是多少?可以通过boost::asio::ip::tcp::socket查询吗?
【问题讨论】:
-
它会传输到缓冲区直到它填满,然后它会停止直到空间可用,这只有在电缆恢复并且接收器再次开始接收时才会发生。
标签: tcp buffer boost-asio