这与 Linux 内核 2.6 TCP 套接字有关。
我正在发送大量数据,例如 300 MB,并以非阻塞方式发送给另一个一次接收 8 MB 的客户端。
在一次 8 MB 接收后,“接收者”停止接收,因为它想要执行其他任务,例如错误处理。发送方会得到一个 EWOULDBLOCK,但由于它是异步通信,发送方会尝试填满另一端的 TCP recv 缓冲区。
我的问题是:即使“发送方”收到 EWOULDBLOCK 并且“接收方”停止接收,TCP recv 缓冲区中还会有数据吗?相同的套接字用于错误处理,那么“接收者”是否必须在尝试重用现有套接字之前清除 TCP recv 缓冲区?