gpt4 book ai didi

c++ - ZMQ套接字连接超时

转载 作者:搜寻专家 更新时间:2023-10-31 01:28:59 26 4
gpt4 key购买 nike

我正在为 ZMQ (cppzmq) 使用 C++ 绑定(bind),我正在尝试使用 .setsockopt() 方法设置 TCP 套接字的连接超时:

int connectTimeout = 1000;
socket.setsockopt(ZMQ_CONNECT_TIMEOUT, &connectTimeout, sizeof(connectTimeout));
socket.connect(clientConfiguration.uri);

但是,在代码到达套接字上的实际 .send()/.recv() 之前,我没有看到任何事情发生(抛出异常?)。为了确保套接字有机会抛出,我在 .connect().send() 方法之间放置了一个 sleep 。

根据文档.zmq_connect() 只是进入READY 状态,而没有与端点建立实际连接。那么问题是我应该在何时以及如何体验连接超时?

最佳答案

So the question is when and how I should experience the connection timeout ?

什么时候?

好吧,实际上从不直接,因为这只是 ZeroMQ Context()-instances 的内部 的 API 公开设置Finite-State-M机器操作方式(此处 .setsockopt() 将选定的传输类设置为 - the-API-curtain ISO-OSI-L3 详细信息)。

如何(如果有的话)

嗯,还有一些其他的 .setsockopt() 细节,(如果放在上面)可能会间接感知设置 ZMQ_CONNECT_TIMEOUT 的影响> 连接超时。在这里,只是间接地通过修改后的 FSM 行为,即在某种程度上,.Context()-engine 实例将如何响应此类事件(所有纯粹是内部的,在幕后) API - 这就是为什么我们在方法论上使用 API 方法来分离关注点,不是吗?)。

更多详情引用:

  • 关于 ZMQ_IMMEDIATE 的 API 详细信息,
  • 关于 ZMQ_RECONNECT_IVL 的 API 详细信息,
  • 关于 ZMQ_RECONNECT_IVL_MAX 的 API 详细信息。
    ( API 版本不断发展,请注意并非所有 代理都共享相同的 ZeroMQ API 版本。因此最好记住零禅,并随时重复使用 anxient 设计者的指令 #ASSUME没有。)

预告片奖励:

如果不熟悉 ZeroMQ 工具,可能会发现这 5 秒阅读 [ ZeroMQ hierarchy in less than a five seconds 中的主要概念差异很有用。 ] 部分,

enter image description here

( courtesy Martin Sústrik, co-father of both ZeroMQ + nanomsg. 尊重!)

关于c++ - ZMQ套接字连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50895827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com