ZeroMQ:重新绑定套接字时地址使用错误

2024-01-09

将 ZeroMQ 套接字绑定到端点并关闭套接字后,将另一个套接字绑定到同一端点需要多次尝试。之前的调用zmq_bind直到成功失败并出现错误“地址正在使用”(EADDRINUSE).

下面的代码演示了这个问题:

#include <cassert>
#include <iostream>

#include "zmq.h"

int main() {
    void *ctx = zmq_ctx_new();
    assert( ctx );
    void *skt;

    skt = zmq_socket( ctx, ZMQ_REP );
    assert( skt );
    assert( zmq_bind( skt, "tcp://*:5555" ) == 0 );
    assert( zmq_close( skt ) == 0 );

    skt = zmq_socket( ctx, ZMQ_REP );
    assert( skt );
    int fail = 0;
    while ( zmq_bind( skt, "tcp://*:5555" ) ) { ++fail; }
    std::cout << fail << std::endl;
}

我在 Windows XP SP3 上使用 ZeroMQ 4.0.3,编译器是 VS 2008。libzmq.dll 是使用提供的 Visual Studio 解决方案构建的。

这打印1在进行“调试”构建时(上面的代码和 libzmq.dll 的代码)并且0使用“发布”构建。奇怪的是,当使用混合构建配置运行上面的代码时(使用发布库进行调试),fail数到 6。


Pieter Hintjens 给了我提示在邮件列表上 http://article.gmane.org/gmane.network.zeromq.devel/23345:

致电给zmq_close启动套接字关闭。这是在由 ZeroMQ 启动的特殊“收割者”线程中完成的,以调用zmq_close异步和非阻塞。看“收割者之线” http://zeromq.org/whitepapers:architecture#toc6有关 ZeroMQ 架构的白皮书。

上面的代码不会等待线程执行实际工作,因此端点不会立即变得可用。

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

ZeroMQ:重新绑定套接字时地址使用错误 的相关文章

  • 赋值运算符和复制构造函数有什么区别?

    我不明白C 中赋值构造函数和复制构造函数之间的区别 是这样的 class A public A cout lt lt A A lt lt endl The copy constructor A a b The assignment cons
  • 在 C++11 中省略返回类型

    我最近发现自己在 C 11 模式下的 gcc 4 5 中使用了以下宏 define RETURN x gt decltype x return x 并编写这样的函数 template
  • Guid 应包含 32 位数字和 4 个破折号

    我有一个包含 createuserwizard 控件的网站 创建帐户后 验证电子邮件及其验证 URL 将发送到用户的电子邮件地址 但是 当我进行测试运行时 单击电子邮件中的 URL 时 会出现以下错误 Guid should contain
  • try-catch 中未处理的异常

    try list from XElement e in d Descendants wix File where e Attribute Name Value Contains temp Name e Parent Parent Attri
  • std::map 和二叉搜索树

    我读过 std map 是使用二叉搜索树数据结构实现的 BST 是一种顺序数据结构 类似于数组中的元素 它将元素存储在 BST 节点中并按其顺序维护元素 例如如果元素小于节点 则将其存储在节点的左侧 如果元素大于节点 则将其存储在节点的右侧
  • ZLIB 解压缩

    我编写了一个小型应用程序 该应用程序应该解压缩以 gzip deflate 格式编码的数据 为了实现这一点 我使用 ZLIB 库 使用解压缩功能 问题是这个功能不起作用 换句话说 数据不是未压缩的 我在这里发布代码 int decompre
  • 如何在 VS 中键入时显示方法的完整文档?

    标题非常具有描述性 是否有任何扩展可以让我看到我正在输入的方法的完整文档 我想查看文档 因为我可以在对象浏览器中看到它 其中包含参数的描述和所有内容 而不仅仅是一些 摘要 当然可以选择查看所有覆盖 它可能是智能感知的一部分 或者我不知道它并
  • 转到 C# WPF 中的第一页

    我正在 WPF 中使用导航服务 为了导航到页面 我使用 this NavigationService Navigate new MyPage 为了返回我使用 this NavigationService GoBack 但是如何在不使用的情况
  • 为什么 std::allocator 在 C++17 中丢失成员类型/函数?

    一边看着std 分配器 http en cppreference com w cpp memory allocator 我看到成员 value type pointer const pointer reference const refer
  • Xamarin Android:获取内存中的所有进程

    有没有办法读取所有进程 而不仅仅是正在运行的进程 如果我对 Android 的理解正确的话 一次只有一个进程在运行 其他所有进程都被冻结 后台进程被忽略 您可以使用以下代码片段获取当前正在运行的所有 Android 应用程序进程 Activ
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • C# 编译器如何决定发出可重定向的程序集引用?

    NET Compact Framework 引入了可重定向程序集引用 现在用于支持可移植类库 基本上 编译器会发出以下 MSIL assembly extern retargetable mscorlib publickeytoken 7C
  • C# using 语句、SQL 和 SqlConnection

    使用 using 语句 C SQL 可以吗 private static void CreateCommand string queryString string connectionString using SqlConnection c
  • 是否有一个 C++ 库可以从 PDF 文件中提取文本,例如 PDFBox for Java? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 去年 我使用 PDFBox 在 Java 中创建了一个应用程序来获取某些 PDF 文件中的原始文本 现在
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 如何在 GCC 5 中处理双 ABI?

    我尝试了解如何克服 GCC 5 中引入的双重 ABI 的问题 但是 我没能做到 这是一个重现错误的非常简单的示例 我使用的GCC版本是5 2 如您所见 我的主要函数 在 main cpp 文件中 非常简单 main cpp include
  • 我应该在应用程序退出之前运行 Dispose 吗?

    我应该在应用程序退出之前运行 Dispose 吗 例如 我创建了许多对象 其中一些对象具有事件订阅 var myObject new MyClass myObject OnEvent OnEventHandle 例如 在我的工作中 我应该使
  • 在基类集合上调用派生方法

    我有一个名为 A 的抽象类 以及实现 A 的其他类 B C D E 我的派生类持有不同类型的值 我还有一个 A 对象的列表 abstract class A class B class A public int val get privat
  • Azure函数版本2.0-应用程序blobTrigger不工作

    我有一个工作功能应用程序 它有一个 blob 输入和一个事件中心输出 在测试版中工作 随着最新的更改 我的功能不再起作用 我尝试根据发行说明更新 host json 文件 但它没有引用 blob 触发器 version 2 0 extens
  • 如何使用 std::array 模拟 C 数组初始化“int arr[] = { e1, e2, e3, ... }”行为?

    注意 这个问题是关于不必指定元素数量并且仍然允许直接初始化嵌套类型 这个问题 https stackoverflow com questions 6111565 now that we have stdarray what uses are

随机推荐

  • 最有效的方法...唯一的随机字符串

    我需要有效地将 5 个字符的随机字符串插入数据库 同时确保它是唯一的 生成随机字符串不是问题 但目前我正在做的是生成字符串 然后检查数据库是否已经存在 如果存在 我会重新开始 有没有更有效的方法来完成这个过程 请注意 我不想使用 GUID
  • 如何在 keydown 中停止按键事件

    我怎样才能停下来keypresskeydown 处理程序中的事件 即使从 keydown 中也无法停止按键 它们都是非常独立的事件 您可以做的是在读取字符后取消按键 按键 这是我只允许在文本框中输入字母和数字的方法 jQuery urlBo
  • Nuxt Vue 中的 Splidejs

    有没有人尝试过在 Nuxt 中使用 Vue 解决方案作为插件或模块 我在尝试以正确的方式做到这一点时遇到了很多挑战 我正在尝试将 Splide Vue 滑块从 NPM 导入 Nuxt 通过 NPM 安装它后 如何将其导入插件中的 splid
  • “->”(箭头运算符)和“.”有什么区别Objective-C 中的(点运算符)?

    在 Objective C 中 通过使用访问类中的变量有什么区别 gt 箭头运算符 和 点运算符 是 gt 用于直接访问 vs 点 不是直接的吗 gt 是传统的 C 运算符 用于访问指针引用的结构的成员 由于 Objective C 对象
  • 在 Safari 中隐藏文本区域调整大小手柄

    我在应用程序中使用文本区域组件 并动态控制它们的高度 当用户键入时 只要有足够的文本 高度就会增加 这在 IE Firefox 和 Safari 上运行良好 然而 在 Safari 中 右下角有一个 手柄 工具 允许用户通过单击和拖动来调整
  • 如何将 dapper 与 ASP.Net core Identity 结合使用?

    我有一个数据库 我尝试使用 dapper 和 Core Identity 来查询数据库 但我现在陷入困境 我正在使用 IdentityUser 界面中的用户 public class User IdentityUser 使用 dapper
  • 使用 SemanticResultKey 时出现 TargetInitationException

    我想建立我的语法来接受多个数字 当我重复数字 例如说 二十一 时 它有一个错误 所以我不断减少代码来找出问题所在 我为语法生成器编写了以下代码 string numberString one Choices numberChoices ne
  • Orchard 根据过滤的下拉选择创建投影或搜索

    我认为 我有一个简单的功能 我试图将其添加到我的 Orchard 1 6 站点 但我找不到任何有关如何执行此操作的教程或说明 我有一个名为 Office 的自定义类型 每个办公室都有一个名为 State 的自定义字段 指示办公室所在的州 实
  • 当块后代时关注 ListView 中的 EditText (Android)

    我有一个定制的ListView 每行都有一个EditText Buttons TextView 为了使 ListView 项目可点击 我保留了android descendantFocusability blocksDescendants
  • 如果字典键不可用,则返回默认值

    我需要一种方法来获取字典值 如果其键存在 或者简单地返回None 如果没有 然而 Python 提出了一个KeyError如果您搜索不存在的键 则会出现异常 我知道我可以检查密钥 但我正在寻找更明确的内容 有没有办法直接返回None如果密钥
  • 如何在 OSX 上从命令行打开 Visual Studio Code?

    The docs https code visualstudio com docs codebasics launching vscode提到一个名为的可执行文件code 但我不确定在哪里可以找到它 以便我可以将其放在我的路径上 我从 VS
  • div 边框半径问题(在 Firefox 和 Opera 上)

    正如你所看到的 有两张图片 首先 在 chrome 上 右侧有 Be en 和 Yorumlar 按钮 边框看起来非常好 但第二张照片显示 firefox和opera有边框半径的问题 我尝试做边框宽度 薄 边框 1px实心等 但它看起来一样
  • EC.element_to_be_clickable 和 EC.presence_of_element_ located 之间单击()元素的区别

    我在间歇性单击某个元素时遇到 TimeoutExceptions 我尝试过显式等待和 time sleep 它工作了一段时间 我一次又一次地遇到例外 我想了解这是否是由预期条件引起的 WebDriverWait self driver 40
  • 简单饼图:错误百分比未居中?

    我有一个 symfony 项目 我使用 bootstrap 作为样式 并且我想使用 Easy Pie Chart 作为仪表板页面 所以 在 base html twig 中 block stylesheets endblock block
  • 将任意 GUID 编码为可读 ASCII (33-127) 的最有效方法是什么?

    GUID 的标准字符串表示形式大约需要 36 个字符 这非常好 但也非常浪费 我想知道如何使用 33 127 范围内的所有 ASCII 字符以最短的方式对其进行编码 简单的实现会产生 22 个字符 只是因为128 bits 6 bits产量
  • 来自旋转 JSON 的 D3 多系列折线图

    这里有一个很好的多系列折线图示例http bl ocks org mbostock 3884955 http bl ocks org mbostock 3884955如果 tsv 数据被布置出来 我确信它会看起来像这样 date 20111
  • .NET 进程可以分配的最大内存

    垃圾收集器可以为 NET 进程分配的最大内存是多少 当我编译到 x64 时 Process GetCurrentProcess MaxWorkingSet 返回大约 1 4GB 但是当我编译到 AnyCPU x64 时 返回相同的数字 对于
  • 无法通过 shell 在 CentOS 7 上安装 phpMyAdmin

    yum y install phpmyadmin 出现错误 Error Package phpMyAdmin 4 4 15 10 2 el7 noarch epel Requires php zip Available php common
  • 是否可以在 WPF ItemsControl 中模拟边框折叠(ala CSS)?

    我正在 WPF 中设置项目的样式ListBox 并希望在每个项目周围放置边框 和BorderThickness设置为 1 例如 相邻项目之间的上下边框都会被绘制 因此看起来比侧边框 更厚 如下所示 生成这些的项目模板ListBoxItems
  • ZeroMQ:重新绑定套接字时地址使用错误

    将 ZeroMQ 套接字绑定到端点并关闭套接字后 将另一个套接字绑定到同一端点需要多次尝试 之前的调用zmq bind直到成功失败并出现错误 地址正在使用 EADDRINUSE 下面的代码演示了这个问题 include