仪表控制中常用的Onc RPC 协议

基本说明

数据以UDP或TCP协议为基础,当使用TCP格式是,要先发4个字节的数据长度(大端模式),数据使用大段模式,高字节在前,

帧长度(n) 帧内容
4个字节 n个字节

数据基本格式

请求格式

数据内容 数据说明 长度
XID 随机数,应答与发送方必须一致 4
协议版本 暂时只使用 1 4
消息类型 常用类型
1,建立连接
4
过程编号 也可以称为功能编号 4
数据内容 请求的参数 帧长度-16

C语言描述

struct rpc_call_msg {
   unsigned int xid;
  unsigned int rpcvers;
  unsigned int prog;
  unsigned int vers;
  unsigned int proc;
  opaque_auth cred;
  opaque_auth verf;
 /* procedure specific parameters start here */
}

··· C#
MemoryStream ms=new MemoryStream();
XdrHelper.Write(ms,Xid);
XdrHelper.Write(ms,MessType);
XdrHelper.Write(ms,RpcVersion);

       XdrHelper.Write(ms,Id);
          XdrHelper.Write(ms,Ver);
       XdrHelper.Write(ms,ProcedureId);
        byte[] credentialsBytes = Credentials.ToBytes();
       ms.Write(credentialsBytes,0,credentialsBytes.Length);

        byte[] verifierBytes = Verifier.ToBytes();
        ms.Write(verifierBytes, 0, verifierBytes.Length);

        Procedure.WriteToStream(ms);

       return ms.ToArray();

···

应答帧格式
C语言描述

struct rpc_rmsg {
   unsigned int xid;
  unsigned int rpcvers;
  unsigned int prog;
  unsigned int vers;
  unsigned int proc;
  opaque_auth cred;
  opaque_auth verf;
 /* procedure specific parameters start here */
}

# 具体协议
## 建立连接

发送数据
| 数据内容 |值 |长度|
|--|--|--|
| XID  | 随机数,应答与发送方必须一致  |4|
|消息类型,|1|4|
|协议版本,|1 |4|
|过程编号|10|4|
|数据内容| 帧长度-16|

接收数据
| 数据内容 |值 |长度|
|--|--|--|
| XID  | 应答,与请求方必须一致  |4|
|消息类型,|1|4|
|协议版本,|1 |4|
|过程编号|10|4|
|数据内容| 帧长度-16|

你可能感兴趣的:(集中监测,长龙)