主题:怎么传输一个结构体?

  共有36356人关注过本帖    
lm
1楼


怎么传输一个结构体?  发帖心情 Post By:2004-4-7 15:11:00   [只看该作者]

在pc机上,发送端把这个结构体送到字符缓冲区中,接收端通过一个
字符缓冲区接收,然后强制转换为结构体类型,这种方法传输结构体
不会出错。
我在NB200上用同样思路传输结构体,接收结果不正确,请问该如何设计此程序?

  单帖管理 | 引用 | 回复 回到顶部
lm
2楼


  发帖心情 Post By:2004-4-7 15:33:00   [只看该作者]

补充一点,我的相关代码如下:
结构体定义:typedef struct
{
char a;
...
short b;
...
}univdata;

用字符型指针指向此结构体:
univdata *asdu;
asdu=(univdata *)malloc(sizeof(univdata));
asdu->a=<|>p<|>;      /*结构体赋初值*/
...
char *txbuf=(char *)asdu; 

发送此结构体:
ConnWrite(conno,txbuf,len,1);

btw:传输字符串的结果是正确的,说明程序没有问题。请问对结构体该如何处理?

  单帖管理 | 引用 | 回复 回到顶部
zhl
3楼


  发帖心情 Post By:2004-4-7 17:00:00   [只看该作者]

将结构类型强制转换为char类型后,再调用ConnWrite(...)函数进行发送,其中len为该结构的长度。看你的代码没有问题,再看看是否有别的什么原因造成呢?

  单帖管理 | 引用 | 回复 回到顶部
lm
4楼


  发帖心情 Post By:2004-4-8 10:15:00   [只看该作者]

我找不出原因,但考虑到可能是字节对齐和主机网络字节顺序的问题
NB200的tcp/ip运行库没有提到这方面的问题,请问对此是如何处理的?

  单帖管理 | 引用 | 回复 回到顶部
zhl
5楼


  发帖心情 Post By:2004-4-8 10:31:00   [只看该作者]

可参考我们提供的TCPDEMO程序中的TCPSvr.prj,在该程序有关于接收数据结构(结构内容包括时间、日期等)的应用。

  单帖管理 | 引用 | 回复 回到顶部

返回首页

怎么传输一个结构体?

用户名:
            验证码: 验证码,看不清楚?请点击刷新验证码
内容: