提升asio超时[重复]

2023-11-27

可能的重复:
如何在 boost asio 中设置阻塞套接字的超时?

我之前读过一些关于超时的条目,但我不明白。

我想要一个定义的连接超时。 连接代码如下所示:

try{
  boost::asio::ip::tcp::resolver              resolver(m_ioService);
  boost::asio::ip::tcp::resolver::query       query(link.get_host(), link.get_scheme());
  boost::asio::ip::tcp::resolver::iterator    endpoint_iterator = resolver.resolve(query);
  boost::asio::ip::tcp::resolver::iterator    end;
  boost::system::error_code                   error   =   boost::asio::error::host_not_found;

  while (error && endpoint_iterator != end)
   {
    m_socket.close();
    m_socket.connect(*endpoint_iterator++, error);
   }
}

我也想要一个读取超时。

I use boost::asio::read_until(m_socket, response, "\r\n");用于读取标题。

是否可以设置简单的超时?


首先,我相信您应该始终使用异步方法,因为它们更好,并且您的设计只会从反应器模式方法中受益。 在糟糕的情况下,您很着急并且正在进行原型设计,同步方法可能会很有用。在这种情况下,我确实同意你的观点,如果没有任何超时支持,它们就无法在现实世界中使用。

我所做的很简单:

void HttpClientImpl::configureSocketTimeouts(boost::asio::ip::tcp::socket& socket)
{
#if defined OS_WINDOWS
    int32_t timeout = 15000;
    setsockopt(socket.native(), SOL_SOCKET, SO_RCVTIMEO, (const char*)&timeout, sizeof(timeout));
    setsockopt(socket.native(), SOL_SOCKET, SO_SNDTIMEO, (const char*)&timeout, sizeof(timeout));
#else
    struct timeval tv;
    tv.tv_sec  = 15; 
    tv.tv_usec = 0;         
    setsockopt(socket.native(), SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv));
    setsockopt(socket.native(), SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv));
#endif
}

根据 OS_WINDOWS 宏,上面的代码既可以在 Windows 上运行,也可以在 Linux 和 MAC OS 上运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

提升asio超时[重复] 的相关文章

  • Exit() 时是否调用基本对象析构函数?

    我意识到这个问题已经出现过几次 但我试图获得上述问题的明确答案 但我不断遇到相互矛盾的信息 我需要知道的是 当我使用 exit 时 基本类对象是否被破坏 我知道需要删除动态内存 但我的意思更像是 include
  • 尝试了解使用服务打开对话框

    我已经阅读了有关使用 mvvm 模式打开对话框的讨论 我看过几个使用服务的示例 但我不明白所有部分如何组合在一起 我发布这个问题寻求指导 以了解我应该阅读哪些内容 以更好地理解我所缺少的内容 我将在下面发布我所拥有的内容 它确实有效 但从我
  • 将类对象放置在向量中?

    我注意到我可以将一个类放置在一个向量中 这是我的程序 我收到以下错误 out blackjack exe blackjack obj blackjack obj error LNK2019 unresolved external symbo
  • 未找到 Boost 库,但编译正常

    我正在尝试在 C 中使用 boost 的文件系统 使用时看起来编译没问题 c c Analyse c o Analyse o g W Wall L usr local lib lboost filesystem lboost system
  • 传递 constexpr 对象

    我决定给予新的C 14的定义constexpr旋转并充分利用它 我决定编写一个小的编译时字符串解析器 然而 我正在努力保持我的对象constexpr将其传递给函数时 考虑以下代码 include
  • 有些有助于理解“产量”

    在我不断追求少吸的过程中 我试图理解 产量 的说法 但我不断遇到同样的错误 someMethod 的主体不能是迭代器块 因为 System Collections Generic List 不是迭代器接口类型 这是我被卡住的代码 forea
  • extern 声明和函数定义都在同一文件中

    我只是浏览了一下gcc源文件 在gcc c 我发现了类似的东西 extern int main int char int main int argc char argv 现在我的疑问是extern是告诉编译器特定的函数不在这个文件中 但可以
  • RestSharp获取序列化输出

    我正在寻找一种方法来访问 AddBody 调用的序列化结果 我正在使用内置的 RestSharp 序列化器 例子 class Foo public string FooField void SendRecord var f new Foo
  • 在 C# 中,如何根据在 gridview 行中单击的按钮引用特定产品记录

    我有一个显示产品网格视图的页面 该表内有一列 其中有一个名为 详细信息 的超链接 我想这样做 以便如果用户单击该特定产品的详细信息单元格 将打开一个新页面 提供有关该产品的更多信息 我不确定如何确定哪个Product记录链接的详细信息以及我
  • 如何在 C# Designer.cs 代码中使用常量字符串?

    如何在 designer cs 文件中引用常量字符串 一个直接的答案是在我的 cs 文件中创建一个私有字符串变量 然后编辑 Designer cs 文件以使用此变量 而不是对字符串进行硬编码 但设计者不喜欢这样抛出错误 我明白为什么这行不通
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • memcpy/memmove 到联合成员,这是否设置“活动”成员?

    重要说明 一些评论者似乎认为我是从工会抄袭的 仔细看memcpy 它从普通旧地址复制uint32 t 它不包含在联合中 另外 我正在复制 通过memcpy 到工会的特定成员 u a16 or u x in a union 不直接到整个联盟本
  • 将二变量 std::function 转换为单变量 std::function

    我有一个函数 它获取两个值 x 和 y 并返回结果 std function lt double double double gt mult double x double y return x y 现在我想得到一个常量 y 的单变量函数
  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • Oauth2中如何同时撤销RefreshToken和使AccessToken失效

    我正在使用 Owin Oauth2 授权和资源服务器相同 开发单页面应用程序 AngularJS Net MVC Json Rest API 的身份验证流程 我选择了 Bearer Token 路由而不是传统的 cookie session
  • 模板类中的无效数据类型生成编译时错误?

    我正在使用 C 创建一个字符串类 我希望该类仅接受数据类型 char 和 wchar t 并且我希望编译器在编译时使用 error 捕获任何无效数据类型 我不喜欢使用assert 我怎样才能做到这一点 您可以使用静态断言 促进提供一个 ht
  • 如何解压 msgpack 文件?

    我正在将 msgpack 编码的数据写入文件 在编写时 我只是使用 C API 的 fbuffer 如 我为示例删除了所有错误处理 FILE fp fopen filename ab msgpack packer pk msgpack pa
  • Visual Studio 2015 - Web 项目上缺少共享项目参考选项卡

    我从 MSDN 订阅升级到 Visual Studio 2015 因为我非常兴奋地阅读有关共享项目的信息 当我们想要做的只是重用代码时 不再需要在依赖项中管理 21382 个 nuget 包 所以我构建了一个测试共享项目 其中包含一些代码
  • 了解 Lambda 表达式和委托 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经尝试解决这个问题很长一段时间了 阅读在线博客和文章 但到目前为止还没有成功 什么是代表 什么是 Lambda 表达式 两者的优点
  • 如何在 sql azure 上运行 aspnet_regsql? [复制]

    这个问题在这里已经有答案了 可能的重复 将 ASP NET 成员资格数据库迁移到 SQL Azure https stackoverflow com questions 10140774 migrating asp net membersh

随机推荐

  • 对于 Node.js 上的并发任务,哪个更好?纤维?网络工作者?或线程?

    我前段时间偶然发现了node js并且非常喜欢它 但很快我发现它严重缺乏执行CPU密集型任务的能力 因此 我开始谷歌搜索并得到了解决问题的答案 Fibers Webworkers 和 Threads thread a gogo 现在使用哪一
  • 更改 FlowDirection 时复选框勾选镜像

    操作系统 微软Windows 8 1 开发应用程序 Microsoft Visual Studio 2013 WPF应用程序开发 我已经从 Windows 7 迁移到 Windows 8 1 现在我在 VS2012 中开发的旧应用程序有一种
  • 关于c中“非声明”的优化?

    在学习编译器优化时 我在中编写代码C under Linux with GCC版本gcc version 4 4 5 Ubuntu Linaro 4 4 4 14ubuntu5 1 要了解not a statement nop 用C语言 我
  • 用于在列表框中添加/删除项目的事件 c#.NET

    我有一个列表框控件item动态添加和手动删除 由于 删除项目 按钮 当项目数量发生变化时 我想更新用户界面的其他部分 即 您必须选择一些文件 的标题 和项目计数标题 如何添加事件处理程序或有效地添加事件处理程序以在项目数量更改时触发 例如一
  • 通过Web服务从服务器发送pdf文件到客户端

    由于我是网络服务新手 您能告诉我问题的答案吗 我的问题是 我想实现一个 Web 服务 当客户端调用此 Web 服务时 该服务将 pdf 文件发送到客户端 请有人帮我提供一段不错的代码或解释 现在有人可以解决我的错误吗 12 23 09 42
  • PreRenderView 在每次回发时增量调用

    我对执行的顺序和数量有疑问f event type preRenderView 在我在这里搜索的过程中 我像往常一样找到了 BalusC 的答案this and this与我的问题相关的帖子 仍然给我留下了两个问题 当我放一个f event
  • 黑莓模拟器无法连接到互联网

    我的 BB 模拟器无法连接到互联网 我使用代理 并在 HTTP HANDLER 标题下的 rimpublic property 中输入了以下内容 application handler http proxyEnabled true appl
  • GLSL-ES 2.0 中顶点属性是否可以是数组?

    在 GLSL ES 中可以有数组 例如 GLSL ES 规格给出了以下作为数组的统一变量的示例 uniform vec4 lightPosition 4 顶点属性是否可以是数组 换句话说 根据规范 以下内容合法吗 attribute vec
  • 如何在实体框架代码优先中删除表?

    我正在使用具有自动迁移功能的实体框架 因此 当我向上下文添加新模型时 我的数据库会更新并创建新表 我想做的恰恰相反 将表从数据库中完全删除 但是 从 Context 类中删除定义不起作用 public class CompanyContex
  • Xcode:使用核心图像与 alpha 进行合成

    我想创建一个 CoreImage 滤镜链 并能够通过将其单独效果与 alpha 或不透明度设置合成来控制链中每个滤镜的 强度 但我没有看到与 alpha 合成的方法或文档中的不透明度 我猜我可以跳出核心图像过滤器链并与核心图形上下文进行合成
  • 将 JavaScript 变量值传递给输入类型隐藏值

    我想将两个整数的乘积值分配给 html 文档中已有的隐藏字段 我正在考虑获取 javascript 变量的值 然后将其传递给隐藏的输入类型 我很难解释 但这就是它应该如何工作 脚本示例 上面计算了产品 我希望产品位于隐藏字段中
  • 如何使用 Spring-Kafka 通过 Confluence Schema 注册表读取 AVRO 消息?

    如何使用 Spring Kafka 通过 Confluence Schema 注册表读取 AVRO 消息 有样品吗 我在官方参考文档中找不到它 下面的代码可以读取 customer avro 主题的消息 这是我定义的值的 AVRO 模式 t
  • 迭代未注册的加载项 (.xla)

    我需要帮助 了解如何迭代当前打开的 Excel 加载项文件 xla 尚未使用 Excel 注册Tools gt Add ins菜单路径 更具体地说 我对未出现在加载项对话框中但具有的任何工作簿感兴趣ThisWorkbook IsAddin
  • 如何在没有 matlabs 数据库工具箱的情况下从 matlab 访问 postgresql 数据库?

    我已经尝试使用pgmex 不幸的是它不能与 libpq5 一起工作 matlab 立即崩溃 要在不使用数据库工具箱的情况下从 matlab 连接到 postgres 请执行类似以下操作 Add jar file to classpath e
  • 未使用的方法和属性对库或可执行文件的影响

    我正在尝试为 C NET 创建源代码生成器 生成永远不会被调用的属性或方法会导致我的代码运行速度变慢吗 为不使用的库插入 using 语句怎么样 我假设编译器足够聪明 不会构建未使用的 using 语句 但它无法了解属性和方法 因为它们co
  • 使用 Telethon 发送 Telegram 消息:某些实体参数有效,其他参数无效?

    我正在使用 Telethon 的发信息功能向各种聊天发送消息 有时 目的地是另一个用户 只是常规的一对一聊天 有时是一个组 有时是一个超级组 有时是一个频道 我是其中的管理员 如果我理解正确的话 语法应该是 client send mess
  • 为什么PHP不支持多线程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我到处都读到 PHP 不支
  • 如何使用Python有效地将解析后的XML文档存储在MySQL数据库中?

    以下是 XML 文件 book xml
  • TFS 2013:同一台机器上的多个构建控制器

    我希望我们可以在同一台机器上使用多个构建控制器 因为我们有许多团队项目集合 但它们不会同时使用 因此这里不存在真正的性能问题 并且我们的大多数构建服务器都不会长时间使用 我知道可以使用 TFS 2010 和 TFS 2012 来做到这一点
  • 提升asio超时[重复]

    这个问题在这里已经有答案了 可能的重复 如何在 boost asio 中设置阻塞套接字的超时 我之前读过一些关于超时的条目 但我不明白 我想要一个定义的连接超时 连接代码如下所示 try boost asio ip tcp resolver