始终使用 select() 或 poll() 并对 send() 和 receive() 调用施加 10 秒超时是个好主意吗?或者我应该允许他们无限期地阻止?
强加这种超时(使用 select() 或 poll())是否会导致我失去某种错误报告或功能(以返回值的形式),而这些错误报告或功能(以返回值的形式)是我在使用 send() 和 recv 时可以获得的()?
注意:假设我在调用 recv() 或 send() 之前在同一个线程中进行轮询。对 poll() 的调用是静态格式良好的,即除了基于调用包装的 recv() 或 send() 的参数之外,参数不会动态更改
另一个注意事项:如果出现超时,那么我将抛出异常并让程序员捕获它。我希望这能防止 DOS 攻击。如果确实有超时的话。我将抛出异常并且无法调用recv()或send()
还有一个注意事项:与我正在谈论的内容相关的源代码可以在这里找到 https://beej.us/guide/bgnet/output/html/singlepage/bgnet.html#faq在类似的常见问题解答下
谢谢!
最佳答案
超时后您要做什么?如果您要再次开始等待,那么超时不会给您带来任何好处。
如果您要关闭连接并将其标记为死亡,那么超时非常有用。
关于c++ - 在套接字 send() 和 receive() 上使用超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34531332/