send 应该设置多大的缓冲区

时间:2021-01-26 00:53:38
send 不能保证把缓冲区的数据全部发送出去,也就是说,需要在调用完毕之后比较实际发送字节数与缓冲区的大小,如果实际发送字节数小于预期要发送的数据大小,则需要将余下的继续发送。
这样很麻烦,但是当缓冲区的大小比较小时(我将它设置为8k),这样send一次就完全的将8k发送出去,是不是我们可以肯定当缓冲区小于8k的情况一下,我们无需再判断实际发送字节而认为数据被全部发送出去了?

7 个解决方案

#1


应该不行,按我理解无论缓冲区多少都会有这种情况出现

#2


回楼上的兄弟:那是不是就算只发送2个字节,都得把send放在一个循环当中?

#3


在异步I/O当中send就算是只发送一个字节也需要判断返回值,也就是可能需要重试。

#4


哦...那网上很多的代码都是不及格的。

#5


TO:unsigned 

如果不是异步I/O呢?

#6


如果不是异步I/O呢?
================
如果不是异步也同样需要判断返回值。至少是否出错,仍然需要通过返回值进行判断。

#7


肯定不是一定,还是要根据返回值来看

#1


应该不行,按我理解无论缓冲区多少都会有这种情况出现

#2


回楼上的兄弟:那是不是就算只发送2个字节,都得把send放在一个循环当中?

#3


在异步I/O当中send就算是只发送一个字节也需要判断返回值,也就是可能需要重试。

#4


哦...那网上很多的代码都是不及格的。

#5


TO:unsigned 

如果不是异步I/O呢?

#6


如果不是异步I/O呢?
================
如果不是异步也同样需要判断返回值。至少是否出错,仍然需要通过返回值进行判断。

#7


肯定不是一定,还是要根据返回值来看