socket编程请求应答模式下同步问题不知道大侠们如何解决?高手请进

zhangym365 2006-06-19 12:37:45
客户端发出4个请求
伪代码如下:
sck.Send("GetEcho");
retrieveEcho();
sck.Send("GetEcho");
retrieveEcho();
sck.Send("GetEcho");
retrieveEcho();
sck.Send("GetEcho");
retrieveEcho();

服务器端将相同的请求数据返回
如果客户端retrieveEcho(设置定时器,超时就返回)在等待过程中因为等待超时在,下一条retrieveEcho中接收了数据,这个接收的数据如果是第一条Send发出的信息,就需要舍弃。
不知道各位大侠是怎么考虑这个问题的?
...全文
196 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
萧山夜雨 2006-06-20
  • 打赏
  • 举报
回复
这跟同步和异步有什么关系?

对于服务器的回包,你必须有个标识和请求队列里的包对应,没有ID怎么行?
DentistryDoctor 2006-06-19
  • 打赏
  • 举报
回复
用异步的方式?
zhangym365 2006-06-19
  • 打赏
  • 举报
回复
有没有其他的方式实现呢?
萧山夜雨 2006-06-19
  • 打赏
  • 举报
回复
唉呀,上面的回复回错了贴,不好意思。
萧山夜雨 2006-06-19
  • 打赏
  • 举报
回复
那就对了,阻塞模式的正常断开recv返回0.你没有把它视为断线处理。
zhangym365 2006-06-19
  • 打赏
  • 举报
回复
会记得结贴的。
是采用阻塞模式做的。
萧山夜雨 2006-06-19
  • 打赏
  • 举报
回复
要记得结贴给分啊。
萧山夜雨 2006-06-19
  • 打赏
  • 举报
回复
这个很简单,请求包里要带有请求ID,请求时间,定时器检查请求包队列,超时就删除包,在回包时,按回包中的请求ID在队列里查找一次,找不到,就视为错误消息。

移动和电信的话费查询接口就是这么做的。

18,363

社区成员

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

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