关于网络传输结构体的问题

gcweb 2007-10-18 01:39:49
我想用CArchive类和CSocketFile类在网络中传输一个结构体, 如下:
struct A
{
int a;
int b;
};
char buf[8];
memcpy( buf, &A, sizeof( A ) ); // 先将结构体放入缓冲区
CString str;
str.Format( "%s", buf ); // 将字符串转化为CString以放入CArchive传输
可是,在接收端却无法还原本来的结构体,代码如下:
A* si;
char buf1[8];

strcpy( buf1, str); // str是接收到的CString
si = ( A* )buf1;
请大家帮我看看是怎么回事,谢谢大家了!
...全文
195 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
缔峰泽科技 2007-10-21
  • 打赏
  • 举报
回复
ar.write(&A,sizeof(A));....................
Yofoo 2007-10-21
  • 打赏
  • 举报
回复
send(&a, sizeof(A));
recv(&b, sizeof(A));
像这样直接传输就OK了, 不需要转换, 楼主想得太复杂了
gcweb 2007-10-21
  • 打赏
  • 举报
回复
顶一下
gcweb 2007-10-18
  • 打赏
  • 举报
回复
传送数据不是要以字节流的方式传递吗?如果不这样转换,那怎样将结构体转换为字节流呢?
guo_wei 2007-10-18
  • 打赏
  • 举报
回复
你定义的是结构体,却要用字符串拷贝的方式来传递数据,当然会出错了,你可以在传输之前看看buf和str在内存中的数据,是否一样。
gcweb 2007-10-18
  • 打赏
  • 举报
回复
丢失数据?
我结构体修改成这样
struct A
{
unsigned char* a;
unsigned char* b;
};
后还是不行啊,到底是数据转换出了错,还是网络传输序列化的时候有问题呢?
drowdrow 2007-10-18
  • 打赏
  • 举报
回复
str.Format( "%s", buf );
在转化为字符串时丢失了数据
guo_wei 2007-10-18
  • 打赏
  • 举报
回复
这样写有问题吧,比如A::a等于0的话,转化成字符串就会把A::b的信息丢掉。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧