私はrecvmmsg()
を使用したcを使用して単純なアプリケーションを構築し、渡された5番目のパラメータはタイムアウトがtype struct timespec
です。タイムアウトを5秒に設定しましたが、動作しません。無限にブロックされます。以下のようrecvmmsg()でタイムアウトを設定するには?
コードは次のとおりです。
struct timespec timeout;
timeout.tv_sec = 5;
timeout.tv_nsec = 0;
result = recvmmsg(fd, datagrams, BATCH_SIZE, 0, &timeout);
関連性のある可能性のあるバグの提案があります。http://lists.openwall.net/netdev/2012/12/23/30 – Vicky
@Vicky:これは正しいことです - 私のリンクに似ています回答。しかし、誰もが動作を変更しようとしていることは明らかではありません。マニュアルバグと考えられ、マニュアルページが更新され、ほとんど役に立たないタイムアウトパラメータはほとんどのアプリケーションでは使用されません。 –
上記のリンクには、selectを使用した別の解決策があります:http://stackoverflow.com/questions/12713438/how-to-add-delay-to-sento-and-recvfrom-in-udp-client-server-in- c – MOHAMED