没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
网络传输 struct 类型数据
在网络通讯过程中往往涉及一些有关联的参数传递,例如结构体之类的。对于结构体
其实方法挺简单,由于结构体对象在内存中分配的空间都是连续的,所以可以将整个结构
体直接转化成字符串发送,到了接收方再将这个字符串还原成结构体就可以了。
网络传输 struct 数据的约束有两个:
约 束 一 、 就 是 结 构 体 的 大 小 必 须 是 固 定 的 , 不 能 含 有 可 变 大 小 数 据 , 例 如
CString、string 之类的数据。换句话说,结构体所包含的数据必须是 C++基本类型数据以及
这些基本类型数据所形成固定大小的数组。
约束二、就是传接两方结构体定义必须一模一样,包括数据声明次序。如果要发送的
结构体包含“#pragma pack (n)”之类的东西,则接收方在定义此结构体时也要使用“#pragma
pack (n)”声明。传接之所以能够成功是因为结构体数据的内存区域连续性所保证的
本来嘛在 C/C++中所有数据究其本质都是字节类型,只是在表现时各自不同罢了,所
以只要能找到合适的转换为字节类型数据的途径就 OK 了。而字节类型和 char 类型一样都
是一个字节长度,所以问题又等同于找一条合适途径,将信息转换为固定长度 char 数组类
型。
下面举例说明
1、结构体数据全部都是数组
typedef struct _tag_user_info_
{
char cUserID[20];
char cUserSex[10];
char cUserName[18];
char cUserNativePlace[50];
} UserData;
发送方:创建一个对象并初始化各个参数,然后发送。
UserData sendUser;
memcpy ( sendUser.cUserID, "412902198312120311", sizeof("412902198312120311") );
memcpy ( sendUser.cUserSex, "male", sizeof("male") );
memcpy ( sendUser.cUserName, "JianYa.Lee", sizeof("JianYa.Lee") );
资源评论
- 李图图2015-09-27一般吧,感觉没有太大的用
- mark1979_122016-07-20非常好的资源
- 真诚与胡涂2021-09-16基本没有用处
- hdtongxin3ban2015-03-18非常好的资源 很感谢mengde666
ZYJian866
- 粉丝: 36
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功