当调用send函数时,如果整个消息的套接字缓冲区中没有空格,则将存储与空间一样多的字节,并返回该数量。 如果根本没有空间,函数将阻塞,直到至少有1个字节的可用空间,存储它并返回存储的数量。
以上句子是真的吗?
是否有发送将返回0字节的情况?(除非设置了SNDTIMEO且时间到期)
答案 0 :(得分:1)
当调用send函数时,如果整个消息的套接字缓冲区中没有空格,则将存储与空间一样多的字节,并返回该数量。如果根本没有空间,函数将阻塞,直到至少有1个字节的可用空间,存储它并返回存储的数量。
以上句子是真的吗?
没有。几年前有一个关于这个问题的讨论:关于所有实现者收集的comp.protocols.tcp-ip,并且一致认为Posix不仅要求它不能返回零,它不能返回少于阻塞模式下length
参数的值。
是否有发送将返回0字节的情况?(除非设置了SNDTIMEO且时间到期)
是,当且仅当提供的length
参数为零时。
注意如果SO_SNDTIMEO
设置为非零值并且超时到期,send()
将不返回零:它将返回-1,errno
等于{{1如果没有传输字节。