Linuxでのソケットの動作を理解するのにいくつか問題があります。
setsockopt(sockfd, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(int));
write = write(sockfd, buf, len);
上記のコードでは、書き込みがバッファリングされているため、送信タイムアウトは意味がありません(書き込みシステムコールは、ユーザースペースバッファがカーネルバッファにコピーされるとすぐに返されます)。送信バッファサイズははるかに重要なパラメータですが、送信タイムアウトは価値がないようです。しかし、SO_SNDTIMEOを使用するコードをかなりたくさん見たので、私は確かに間違っています。受信機が非常に遅いと仮定して、SO_SNDTIMEOを使用してユーザースペースコードをタイムアウトするにはどうすればよいですか?