感冒九十九 发表于 2016-06-16 11:16

关于阻塞模式下的send

    在大量的数据发送中send函数会返回一个比参数大小小的返回值吗?还是说他只会返回-1或者等于参数大小的返回值?
    阻塞模式下send,如果是返回-1这时候我可以认为它是断线了还是继续在保持连接呢?如何判断,能通过error判断出来吗?

感冒九十九 发表于 2016-06-16 13:55

居然没人回答!!!好伤心啊

qianguozheng 发表于 2016-06-16 15:25

不知道怎么回答阿,看看错误码是什么,一切皆有可能。

感冒九十九 发表于 2016-06-16 17:00

那在阻塞下会返回比预设值小的返回值吗?回复 3# qianguozheng


   

lxyscls 发表于 2016-06-16 21:32

楼主这个问题我也想知道

block tcp send,应该需要保证所有的data全部写到tcp sendbuf里面去才返回的,也就是返回data的size

另外返回-1,目前除了EINTR,应该其他都需要close

codechurch 发表于 2016-06-16 22:07

send会返回:

比0大的,但一定不比你要发送的数量大。
或者是 -1

也就是说,你send 100字节,可能返回 -1、1、2... 100
我没见过有返回0(除非你的发送数量为0才有可能返回0)


感冒九十九 发表于 2016-06-17 09:48

我看别人博客的时候,又说阻塞模式下返回值只有-1和预设大小值,所以现在很不确定,只有非阻塞模式下才会出现中间值的情况回复 6# codechurch


   

感冒九十九 发表于 2016-06-17 09:53

是啊,这个问题很多人都说阻塞模式下返回值只有-1和预设值,但他们写博客基本都是没做测验的,又不太敢信回复 5# lxyscls


   

codechurch 发表于 2016-06-17 12:55

回复 7# 感冒九十九

我非常负责任的告诉你,socket有中间值。

只有文件系统没有中间值。如,写磁盘文件。


   

感冒九十九 发表于 2016-06-17 15:47

thanks回复 9# codechurch


   
页: [1] 2
查看完整版本: 关于阻塞模式下的send