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

基本说明

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

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

数据基本格式

请求格式

数据内容数据说明长度
XID随机数,应答与发送方必须一致4
协议版本暂时只使用 14
消息类型常用类型
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|

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值