I can't set my socket to non-block and have set the buffer size to 32kbytes using SO_SNDBUF. When i send a message of size lower than 32kbytes then sometimes this call blocks.

what all could be the reason to block and is there a way to know prior sending message if buffer of that size is available or not.

Thanks in advance...