A simple XDR program

#include <stdlib.h>
#include <rpc/rpc.h>

#define bool_t int
#ifndef TRUE
#define TRUE   1
#endif
#ifndef FALSE
#define FALSE  0
#endif

typedef struct student {
    char* name;
    int age;
}STU;

int
main(void)
{
    char *buf;
    XDR x;
    char* buf1;
    char* buf2;
    STU *s_snd = calloc(1, sizeof(struct student));
    s_snd->name = calloc(20, sizeof(char));
    strcpy(s_snd->name, "platform");
    s_snd->age = 25;

    STU *s_rcv = calloc(1, sizeof(struct student));
    s_rcv->name = calloc(20, sizeof(char));

    /* start to encode */
    buf = malloc(100) ;
    xdrmem_create(&x,buf,100,XDR_ENCODE);
    /* encode data */
    if (!xdr_stu(&x, &s_snd)) {
        free(s_snd->name);
        free(s_snd);
        free(s_rcv->name);
        free(s_rcv);
        xdr_destroy(&x);
        return FALSE;
    }

    xdr_destroy(&x);
    /* start to decode */
    xdrmem_create(&x,buf,100,XDR_DECODE);
    /* decode data */
    if (!xdr_stu(&x, &s_rcv)) {
        free(s_snd->name);
        free(s_snd);
        free(s_rcv->name);
        free(s_rcv);
        xdr_destroy(&x);
        return FALSE;
    }

    xdr_destroy(&x);
    printf("s_rcv>name: %s, s_rcv->age: %d/n",s_rcv->name, s_rcv->age);
    return 0;
}

bool_t
xdr_stu(XDR *xdrs, struct student *stu)
{
    if(!xdr_string(xdrs, &(stu->name), 20)
            || !xdr_int(xdrs, &(stu->age))) {
        return FALSE;
    }  
}
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本账号会陆续上传电力行业698协议全套协议,如需,请自行查找我的资源. 包括: DLT 698.45-面向对象的用电信息数据交换协议(报批稿)20170804162636180720297.pdf 基于面向对象协议的-终端-安全模块产品手册V1.1.2.pdf 基于面向对象协议的-智能电能表-安全模块产品手册V1.1.4.pdf DL/T 698-1999低压电力用户集中抄表系统技术条件 DLT 698.1-2009 电能信息采集与管理系统 第1部分 总则.pdf DLT 698.2-200X 电能信息采集与管理系统第2部分主站技术规范.pdf DLT 698.31 电能信息采集与管理系统 第3-1部分:电能信息采集终端技术规范-通用要求.pdf DLT 698.32-2010 电能信息采集与管理系统 第3-2部分:电能信息采集终端技术规范厂站采集终端特殊要求.pdf DLT 698.33-2010 电能信息采集与管理系统 第3-3部分:电能信息采集终端技术规范专变采集终端特殊要求.pdf DLT 698.34-2010 电能信息采集与管理系统 第3-4部分:电能信息采集终端技术规范公变采集终端特殊要求.pdf DLT 698.35 电能信息采集与管理系统 第3-5部分电能信息采集终端技术规范-低压集.pdf DLT 698.41-2010 电能信息采集与管理系统 第4-1部分_通信协议-主站与电能信息采集终端通信.pdf DLT 698.42-2010 电能信息采集与管理系统 第4-2部分 通信协议-集中器下行通信.pdf DLT 790.6-2010 采用配电线载波的配电自动化 第6部分:A-XDR编码规则.pdf GBT 16262.1-2006 信息技术 抽象语法记法一(ASN.1) 第1部分基本记法规范.pdf GBT 16262.2-2006 信息技术抽象语法记法一(ASN.1) 第2部分信息客体规范.pdf GBT 16262.3-2006 信息技术抽象语法记法一(ASN.1) 第3部分约束规范.pdf GBT 16262.4-2006 信息技术抽象语法记法一(ASN.1) 第 4部分ASN.1 规范的参数化.pdf GB-T 16262-1996 信息处理系统 开放系统互连 抽象语法记法—(ASN.1)规范.pdf

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值