udp的通讯问题

zss1103 2006-10-10 09:54:02
请问大家,我现在用udp进行通讯,是用CSocket写的。有两个结构体需要发送,结构体1五秒发送一次,结构体2一秒发送一次,接收的时候怎样才能区分接收的是结构体1还是结构体2呢?
...全文
171 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
star119119 2006-10-12
  • 打赏
  • 举报
回复
the same to f_acme(沧海一声笑)
huaqingci 2006-10-11
  • 打赏
  • 举报
回复
通过接收到的数据的大小也可以判断,但是这样不太好,你可以这样,发送构建数据包的时候,在第一位设一个判断位就可以了
如下

struct s1
{
//...
}
struct s2
{
//...
}
int size = sizeof(s1或者s2);
char *p = new char[size+1];
p[0] = 0;//0 == s1 1= s2;
memcpy(p[1],s1或s2,size);
sendto(socket,p,size+1);

接收端
if(p[0]== 0)
s1 *tmp = (s1*)&p[1];
else
s2 *tmp = (s2*)&p[1];
f_acme 2006-10-11
  • 打赏
  • 举报
回复
enmu TYPE
{
TYPE1,
TYPE2
}
struct s1
{
//...
}
struct s2
{
//...
}

struct Message
{
TYPE type;//TYPE1 or TYPE2
union _message
{
s1 m1;
s2 m2;
}message;
}
发送Message的结构体,利用type来区分s1还s2,消息内容放在联合体内
zss1103 2006-10-10
  • 打赏
  • 举报
回复
能不能给段代码看看?
life_good 2006-10-10
  • 打赏
  • 举报
回复
可以考虑构建一个通用结构.里面用一个标志位区分两种结构.
(不过如果两个结构大小不一样的话,可能造成浪费)
tonyzhengjq 2006-10-10
  • 打赏
  • 举报
回复
结构用标示ID来区分

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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