这几个选项都可以通过setsockopt函数来对套接字进行设置,MSG_WAITALL要求套接字在接收时,阻塞地等到指定的长度的消息都到达才返回,可以简化TCP连接中分片的情况下,需要多次接收的处理。SO_RCVTIMEO(SO_SNDTIMEO)可以设置套接字的接收(发送)超时,防止套接字一直等待造成的程序阻塞。
需要注意的是,及时设置了MSG_WAITALL,套接字还是可能会因为超时而提前返回,这时返回的结果如果大于0,表示接收了部分的消息。
这几个选项结合使用时,可以大大简化套接字操作。
当然,阻塞还是效率比较低,最好还是用非阻塞的方式,然而那样就比较麻烦,还得管理缓冲区。
需要注意的是,及时设置了MSG_WAITALL,套接字还是可能会因为超时而提前返回,这时返回的结果如果大于0,表示接收了部分的消息。
这几个选项结合使用时,可以大大简化套接字操作。
当然,阻塞还是效率比较低,最好还是用非阻塞的方式,然而那样就比较麻烦,还得管理缓冲区。