我在理解 Linux 中套接字的工作时遇到了一些问题。
setsockopt(sockfd, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(int));
write = write(sockfd, buf, len);
在上面的代码中,由于写入被缓冲,发送超时没有任何意义(当用户空间缓冲区被复制到内核缓冲区时,写入系统调用将立即返回)。发送缓冲区大小是更重要的参数,但发送超时似乎没有任何价值。但我肯定错了,因为我见过很多使用 SO_SNDTIMEO 的代码。假设接收器非常慢,如何使用 SO_SNDTIMEO 用户空间代码超时?