【发布时间】:2020-12-09 13:25:13
【问题描述】:
有什么方法可以检查缓冲区中写入的确切字节数?我想使用socket.send() 动态设置我通过套接字发送的数据量。现在我有问题,假设我的文件是 200KB,我的缓冲区设置为 24KB,所以我需要发送 9 个包,我的输出文件是 216KB 大而不是 200KB 作为输入。有没有办法处理这些空字节?
【问题讨论】:
-
我认为这只是一个简单的数学计算和循环。
-
标准 C++ 中没有套接字类,因此您必须包含有关您使用的库的信息。您是否检查过您发送的文件和收到的文件的 bytes 大小?
-
这只是基础数学,不是吗?记下你写了多少字节,你已经知道你总共要写多少字节,一次可以写多少字节......所以这只是对
std::max的调用......不? -
或者
std::min实际上:D -
send不发送包裹。除非您使用的是 UDP,否则您可能不是。请注意 TCP 没有软件包。您可能发送 24KB,然后 recv 将决定只接收 16KB,然后在您下次调用时接收另外 8KB!