一个socket超时重发的问题

yanjing_mail 2009-04-20 01:47:21
程序需要实现这样一个功能:
通过socket给服务端发送一个消息后,如果两分钟收不到答复则重新发送消息。
自己想了一个方法,消息发送时打开一个定时器,接收到回复则关闭,否则重发。
因为程序建立了多个客户端,采用定时器的话就要开多个定时器了,有没有别的好的方法?
...全文
566 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
haowangyi 2009-04-21
  • 打赏
  • 举报
回复
建个队列存储已发送的包,收到回应从队列删除,开个线程轮询该队列,若超时无回应包重发.

还是定时器比较方便。
vOrient_zh 2009-04-21
  • 打赏
  • 举报
回复
楼上正解
Cat_Of_9Life 2009-04-20
  • 打赏
  • 举报
回复
tcp会自动重发,
udp你可以建个队列存储已发送的包,收到回应从队列删除,开个线程轮询该队列,若超时无回应包重发
bragi523 2009-04-20
  • 打赏
  • 举报
回复
阻塞socket
设置发送超时为2秒
如果返回不为true则重新发送
liuzxchina 2009-04-20
  • 打赏
  • 举报
回复
tcp有超时重发机制
udp则需要自己处理重发

18,356

社区成员

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

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