zmq DEALER socket zmq_recv_msg总是调用超时

时间:2015-10-08 13:15:59

标签: c++ sockets zeromq

我在我的应用中使用了zmq ROUTER DEALER 套接字(C++)。

一个进程正在侦听zmq ROUTER套接字以供客户端连接(服务)。

客户端使用zmq DEALER套接字连接到此服务。从客户端我正在对服务进行同步(阻塞)请求。避免 响应的无限等待时间,我在RCVTIMEO套接字上设置 DEALER ,比如5 ms。设置此超时后,我发现没有预料到 在客户端上的行为。

以下是详细信息:

案例1:RCVTIMEO(客户端)套接字上未设置DEALER

在这种情况下,假设客户端向服务发送1000请求。在这些约850个请求的请求中,客户端在5毫秒内收到响应。

对于剩余的150个请求,响应的时间超过5毫秒。

案例2:在RCVTIMEO(客户端)套接字上将DEALER设置为5毫秒

在这种情况下,对于前150-200请求,我看到RCVTIMEO期内收到的有效回复。对于所有剩余的请求,我看到RCVTIMEO超时发生,这是不期望的。两种情况下的请求都是一样的。

预期的行为应该是:对于850个请求,我们应该收到有效的回复(因为它们会在RCVTIMEO内)。而剩下150 请求我们应该看到超时发生。

为了获得超时功能,我尝试了 zmq_poll() ,而不是设置RCVTIMEO,但结果相同。大多数请求都是TIMEDOUT。

我查看了zmq文档以获取详细信息,但没有找到任何内容。

有人可以解释一下这种行为的原因吗?

0 个答案:

没有答案