找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 5395|回复: 4

救救我吧,windows下proactor的问题??????

[复制链接]
发表于 2011-7-14 11:40:54 | 显示全部楼层 |阅读模式
采用proactor模型创建与多个设备(某硬件)的网络连接,然后根据设备通信协议来查询设备的运行状态参数,可是由于设备的通信协议不规范,没有消息头来描述后继应该接收的数据格式,查询设备运行参数的交互方式采用应答方式,我发送一条查询指令,设备回复数据,但是有时设备忙的时候会回复错误标识,此时我想复位接收缓冲区,重新查询接收正确的运行数据,不知道proactor模型支持吗?
改如何处理,还望各位大侠鼎力帮忙!谢谢!
发表于 2011-7-15 09:43:31 | 显示全部楼层
复位接收缓冲区 是什么意思?
 楼主| 发表于 2011-7-18 13:32:51 | 显示全部楼层
复位接收缓冲区 是什么意思?
freeeyes 发表于 2011-7-15 09:43

意思是错误标识被插入到接收缓冲区中,将无法正确解析数据,此时我又不想断开socket重新创建连接,是否可以重新提交一次read请求来重新查询数据,而抛弃之前已经被截断的数据?
发表于 2011-7-18 19:15:53 | 显示全部楼层
重新读也得对方知道出了问题,有数据发过来才行啊。这逻辑貌似有点不足。再者,判断出错,可以用分块校验码,每次都判断影响效率。
发表于 2011-7-19 21:57:55 | 显示全部楼层
楼主貌似想复杂了,你接受的数据就是一个数据流,你只需要在数据流中找到你认为是正确的应答数据就好了,如果数据流中的数据都已经读完了,但是还是没有发现你要的应答数据,那就应该再次发送命令,然后等待收到新的数据,我的理解这里应该是和数据处理相关而和网络无关。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-12-4 15:52 , Processed in 0.042303 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表