tcp send/recv 发送缓存满,接收缓存空,如何处理的问题?

一、对errno 为EAGAIN进行处理。

1. block模式下,send缓存满、recv缓存空,会阻塞;

2.O_NONBLOCK模式下,errno 为EAGAIN,忽略本次,下次继续读写操作。

二、设置发送、接收缓存,增加缓存大小,SO_RCVBUF和SO_SNDBUF

设置缓存大小

setsockopt(s, SOL_SOCKET, SO_RCVBUF, &rcv_size, &optlen); 

查看缓存大小

getsockopt(s, SOL_SOCKET, SO_RCVBUF, &rcv_size, &optlen); 

    

你可能感兴趣的:(缓存,tcp/ip,网络协议)