我正在使用 ZMQ (cppzmq) 的 C++ 绑定,并且尝试使用.setsockopt()如下方法设置 TCP 套接字的连接超时:
int connectTimeout = 1000;
socket.setsockopt(ZMQ_CONNECT_TIMEOUT, &connectTimeout, sizeof(connectTimeout));
socket.connect(clientConfiguration.uri);
Run Code Online (Sandbox Code Playgroud)
但是,在代码到达.send()/.recv()套接字上的实际位置之前,我没有看到任何事情发生(抛出异常?)。为了确保套接字有机会抛出,我在.connect()和.send()方法之间放置了一个睡眠。
根据文档,.zmq_connect()只是进入READY- 状态,而不与端点建立实际连接。那么问题是我应该何时以及如何经历连接超时?
\n\n\n那么问题是我应该何时以及如何经历连接超时?
\n
好吧,实际上从来没有直接这样做过Context(),因为这只是 ZeroMQ实例的内部F initeState机器操作方式的 API 公开设置(这里设置了 API 幕后 ISO- OSI选定的传输类) -L3 详细信息)。.setsockopt()
嗯,还有一些其他.setsockopt()细节,(如果穿上的话)可能会间接感受到设置的连接超时的影响ZMQ_CONNECT_TIMEOUT。在这里,只是间接地,通过修改后的 FSM 行为,即在某种程度上,.Context()引擎实例将如何响应此类事件(全部纯粹在内部,在 API 幕后 - 这就是为什么我们在方法上使用用于分离关注点的 API 方法,不是吗?)。
欲了解更多详情,请参考:
\n\nZMQ_IMMEDIATE,ZMQ_RECONNECT_IVL,ZMQ_RECONNECT_IVL_MAX。#ASSUME NOTHING。)\n\n\n\n\n如果不熟悉 ZeroMQ 工具,可能会发现用 5 秒的时间了解 [ ZeroMQ 层次结构在不到五秒内] 部分中的主要概念差异很有用,
\n
(Martin S\xc3\xbastrik 提供,ZeroMQ + nanomsg 的联合创始人。尊重!)
\n| 归档时间: |
|
| 查看次数: |
7574 次 |
| 最近记录: |