VC++ 报文解析
答案:1 悬赏:50
解决时间 2021-01-16 06:37
- 提问者网友:心牵心
- 2021-01-16 00:45
VC++ 报文解析
最佳答案
- 二级知识专家网友:老鼠爱大米
- 2021-01-16 02:21
这三个报文的前16字节结构是一样的,两个char[4]数组两个int,所以不能从结构来分析具体报文类型,只能通过报文内容来分析。
而正因为结构一样,那么前16个你可以放到一个新结构里面,通过内容来判断,结构肯定不行。
至于内容。。。代码上看不出,应该有命令标识之类的东西吧,应该就在startChar和appVison里面放着。追问最上面不是有CMD定义吗,从CMD定义判断,现在我是不知道怎么从接收的数据中提取出CMD,求教,最好能附上 代码,万分感谢追答要看你接受16个字节用什么,假设是char rev[16]:
int cnd;
memmove(&cnd,&(rev[8]),sizeof(int));
if(cnd==CMD_REQ_1)
{
}
else if(cnd==CMD_REQ_2)
{
}
else
{
}追问但是怎么发送和接收呢,我发送的数据,接收不完全啊追答没代码怎么知道你的接收问题。。。。
一般通讯接收,都是抛出线程持续接收,自己通过拆解标识字符来分段报文的。接收不完全,通常是接收代码处理没有持续或者拼接。
而正因为结构一样,那么前16个你可以放到一个新结构里面,通过内容来判断,结构肯定不行。
至于内容。。。代码上看不出,应该有命令标识之类的东西吧,应该就在startChar和appVison里面放着。追问最上面不是有CMD定义吗,从CMD定义判断,现在我是不知道怎么从接收的数据中提取出CMD,求教,最好能附上 代码,万分感谢追答要看你接受16个字节用什么,假设是char rev[16]:
int cnd;
memmove(&cnd,&(rev[8]),sizeof(int));
if(cnd==CMD_REQ_1)
{
}
else if(cnd==CMD_REQ_2)
{
}
else
{
}追问但是怎么发送和接收呢,我发送的数据,接收不完全啊追答没代码怎么知道你的接收问题。。。。
一般通讯接收,都是抛出线程持续接收,自己通过拆解标识字符来分段报文的。接收不完全,通常是接收代码处理没有持续或者拼接。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯