使用 setsockopt() 和 select() 设置 UDP 超时
Using setsockopt() and select() to set UDP timeout
我知道这两个都可以用来设置recvfrom()的超时时间,但是哪个更好呢?直观上,setsockopt 似乎简单易用,但我发现很多例子都在使用 select()。我只使用单个套接字,传输时会重新计算超时时间(我使用的是Ubuntu)。
这取决于您 requirement/scenario 您希望使用它的具体情况。
一般来说,select允许您同时监控多个套接字。如果您的设计有多个插座,则首选使用 select。但是,如果您打算只有一个套接字,那么使用超时 (SO_RCVTIMEO) 和 setsockopt 的选项是更好的选择。
我知道这两个都可以用来设置recvfrom()的超时时间,但是哪个更好呢?直观上,setsockopt 似乎简单易用,但我发现很多例子都在使用 select()。我只使用单个套接字,传输时会重新计算超时时间(我使用的是Ubuntu)。
这取决于您 requirement/scenario 您希望使用它的具体情况。
一般来说,select允许您同时监控多个套接字。如果您的设计有多个插座,则首选使用 select。但是,如果您打算只有一个套接字,那么使用超时 (SO_RCVTIMEO) 和 setsockopt 的选项是更好的选择。