传递消息的时候以什么形式封装比较好

Acolour 2010-02-01 09:05:05
小弟做了一个管道通信,以消息传送,结构封装,但是这样结构的大小就是固定的,内容也是固定的,如何做到可以扩展,不那么固定,如何封装比较好。
...全文
58 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenyu2202863 2010-02-02
  • 打赏
  • 举报
回复
没必要,需求来了自然有解决办法,过度设计可不是好事
wwgddx 2010-02-02
  • 打赏
  • 举报
回复
typedef struct _MSG_DATA
{
DWORD dwFlag; //结构标志
DWORD dwSize; //数据长度
}MSG_DATA, *LPMSG_DATA;

先发送一个结构,里面包含数据的长度,接着发送数据.
读取的时候先读结构里的长度信息,然后在读取结构后面的dwSize大小的数据。
crst_zh 2010-02-02
  • 打赏
  • 举报
回复
采用“尾随数据”的方式......
Torch009 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zgl7903 的回复:]
typedef struct _MSG_DATA
{
  DWORD dwType; //类型定义
  DWORD dwSize; //长度
  LPBYTE pBuffer; //数据指针
}MSG_DATA, *LPMSG_DATA;
[/Quote]

这个可以,但是数据是一个指针,使用时要注意。
Acolour 2010-02-01
  • 打赏
  • 举报
回复
管道通信的时候,你讲指针传到另一个进程,去读的时候会有问题吧,不在进程的地址空间
zgl7903 2010-02-01
  • 打赏
  • 举报
回复
typedef struct _MSG_DATA
{
DWORD dwType; //类型定义
DWORD dwSize; //长度
LPBYTE pBuffer; //数据指针
}MSG_DATA, *LPMSG_DATA;

15,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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