1、 阻塞模式下,如果正常的话,会直到把你所需要发送的数据发完再返回。
验证代码如下:
/** 获取发送缓冲区的最大长度 */
ret = getsockopt(socketfd, SOL_SOCKET, SO_SNDBUF, &send_buf_max, (socklen_t *)&length);
if (0 != ret)
{
printf("[%d] errno = %d\n", __LINE__, errno);
return -1;
}
printf("send_buf_max = %d\n", send_buf_max); //16384
....//这里省略一些无关操作
buf_len = send_buf_max*10;
ret = send(socketfd, buffer, buf_len, 0);
sleep(5); //等待所有数据发送完
printf("[%d] ret = %d\n", __LINE__, ret); //163840
最后输出为:
send_buf_max =