当前位置:  技术问答>linux和unix

协议的设计一般采用结构体进行数据打包,在协议设计的结构体中能不能使用指针 ?

    来源: 互联网  发布时间:2016-03-26

    本文导语:  能行的话,能给个例子演示一下吗? 就是简单定义一个结构体,里面使用指针,然后将此结构体 用系统调用如send ,sendto之类的发送出去 ? | 结构体中可以但是不建议使用指针,因为这样...

能行的话,能给个例子演示一下吗? 就是简单定义一个结构体,里面使用指针,然后将此结构体 用系统调用如send ,sendto之类的发送出去 ?

|
结构体中可以但是不建议使用指针,因为这样做会给收发两端带来很多麻烦。对于发送端,它需要将结构体中的指针所指向的实际数据序列化到流中,而在接收端又要恢复原始结构。

// 假设有这么一个结构体
struct RUP {
  int a;
  int b;
  int* p;
};

// 已经有了这么一个数据对象
RUP rup;
int x = 9;
rup.a = rup.b = 8;
rup.p = &x;

// 如果想发送这个对象,可能需要做如下工作
send(rup.a, rup.b, *(rup.p));   // 序列化结构体

// 如果想接收这样的对象,可能需要做如下工作
int y = 0;
recv(rup2.a, rup2.b, y);   // 汲取数据
rup2.p = &y;    // 还原结构体

|
看了下 struct ip 里面就用到了 指针,应该可以用

|
协议结构一般都包含一个指针,用来扩展用的。
结构中含有指针需要注意下面几点:
1、通过一个字段来表示该指针空间的长度。
2、发送时,报文长度需要加上该指针空间的长度。

|
想直接发指针肯定是不行的,LZ可以了解一下序列化的概念

|

完全两码事。
简单定义一个结构体,里面使用指针,你能用write直接写到文件里吗?

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • TCP/IP协议族介绍及TCP/IP协议族中各协议对应的RFC编号
  • 求解! telnet默认是远程登录,用的telnet协议,但telnet到25 110等端口时用的什么协议呢?
  • TCP协议四次断连过程介绍及Linux内核协议栈中相关设置项
  • linux支持ti-rpc么?ti-rpc在linux中是不是只使用udp协议,不能使用tcp协议
  • GPRS隧道(GPRS Turning Protocol)协议GTP总体介绍
  • 有谁用过gaim-1.5.0版,我下载了一个,安装后可直接用MSN,但没有QQ协议,不知哪有相配的QQ协议?
  • http协议介绍,文件上传分析及程序举例
  • 请教,linux内核协议栈中,从内核往驱动发送的报文(注意是下行,不是上行),如何从sk_buff判断是组播数据报文还是组播协议报文????
  • Linux内核中影响tcp三次握手的一些协议配置
  • 找SNMP协议的官方技术文档
  • TCP协议报头字段详解及报头图
  • 网络时间协议 NTP
  • TCP协议三次握手过程详解
  • BGP协议4的实现 OPENBGPD
  • 对TCP协议状态及状态转换理解
  • 怎样在Linux内核下添加协议?
  • Http协议中Cookie详细介绍
  • HTML教程 iis7站长之家
  • Http协议3XX重定向介绍及301跳转和302跳转应用场景
  • 在linux中的网卡中,怎么加入2个协议? pxe & tcp/ip
  • 网站robots协议介绍及文件写法举例
  • 多媒体传输协议库 oRTP


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3