1

我们在我们的应用程序中使用 RPC(udp 套接字),我们注意到 RPC 在目标应用程序没有收到(或确认)消息时会重新传输它。

RPC 是否呈现消息的顺序?假设我们有消息 1 和消息 2,它是否等待消息 1 被接收者确认然后发送消息 2?

我也无法找到默认情况下它重试了多少次,如果在 x 次重试后发送失败,它会在某处记录它以便我们检查它吗?

谢谢

4

1 回答 1

1

RPC 库有一个调用来控制在重试请求之前等待多长时间:

 struct timeval tv;
 clnt_control(cl, CLSET_TIMEOUT, (char *) &tv);

当您调用 rpc 调用时,您会提供总超时时间:

 enum clnt_stat clnt_call(CLIENT *clnt, unsigned long procnum,
                       xdrproc_t inproc, char *in,
                       xdrproc_t outproc, char *out,
                       struct timeval tout);

如果您将 tout 除以您使用 clnt_control 设置的值,您将获得重试次数。

同步/异步行为仅取决于您的应用程序。

于 2015-10-09T16:01:50.623 回答