RPC 语言 ping 程序示例

本节说明远程过程调用语言 (RPCL) ping 程序示例。

以下是 RPCL.: 中描述的简单 ping 程序的规范示例:

/*
* Simple ping program
*/
program PING_PROG {
        /* Latest and greatest version */
        version PING_VERS_PINGBACK {
         void
        PINGPROC_NULL(void) = 0;

      /*
       * Ping the caller, return the round-trip time
       * (in microseconds).  Returns -1 if the operation
       * timed out.
       */
           int
           PINGPROC_PINGBACK(void) = 1;
} = 2;

/*
* Original version
*/
version PING_VERS_ORIG {
        void
        PINGPROC_NULL(void) = 0;
        } = 1;
} = 1;

const PING_VERS = 2;      /* latest version */

在此示例中, ping 程序的第一部分,PING_VERS_PINGBACK,由两个过程组成:PINGPROC_NULLPINGPROC_PINGBACK.PINGPROC_NULL过程不采用任何参数,并且不返回任何结果。 但是,它对于计算从客户机到服务器的往返时间很有用。 按公约,程序0RPC 协议应该具有相同的语义,并且不需要任何认证。 第二个程序,PINGPROC_PINGBACK,请求来自服务器的反向 ping 操作。 它返回操作所使用的时间量 (以微秒为单位)。

第二部分,或者 ping 程序的原始版本,PING_VERS_ORIG,不包含PINGPROC_PINGBACK过程。 原始版本对于与较旧的客户机程序的兼容性很有用。 当新的 ping 程序成熟时,可能会从协议中完全删除此旧版本。