重传有关问题

重传问题
我现在有一个接口不断发送数据到外部服务器 发送成功 返回0,不成功返回非0,我如何把那些不成功的数据(自定义数据结构)过段时间重新发送,直到成功。需要怎样的数据结构,和算法,求大神指点重传有关问题
------解决思路----------------------
搜索ARQ关键字或者自动重传
摘自百度百科:
传统自动重传请求分成为三种,即停等式(stop-and-wait)ARQ,回退n帧(go-back-n)ARQ,以及选择性重传(selective repeat)ARQ。后两种协议是滑动窗口技术与请求重发技术的结合,由于窗口尺寸开到足够大时,帧在线路上可以连续地流动,因此又称其为连续ARQ协议。三者的区别在于对于出错的数据报文的处理机制不同。三种ARQ协议中,复杂性递增,效率也递增。除了传统的ARQ,还有混合ARQ(Hybrid-ARQ)。
停等式ARQ

在停等式ARQ中,数据报文发送完成之后,发送方等待接收方的状态报告,如果状态报告报文发送成功,发送后续的数据报文,否则重传该报文。
停等式ARQ,发送窗口和接收窗口大小均为1,发送方每发送一帧之后就必须停下来等待接收方的确认返回,仅当接收方确认正确接收后再继续发送下一帧。该方法所需要的缓冲存储空间最小,缺点是信道效率很低。
回退n帧的ARQ

在回退n帧的ARQ中,当发送方接收到接收方的状态报告指示报文出错后,发送方将重传过去的n个报文。
回退N,发送窗口大于1且小于等于(2^(k-1)),接收窗口等于1。允许发送方可以连续发送信息帧,但是,一旦某帧发生错误,必须重新发送该帧及其后的n帧。这种方式提高了信道的利用率,但允许已发送有待于确认的帧越多,可能要退回来重发的帧也越多。
选择性重传ARQ

在选择性重传ARQ中,当发送方接收到接收方的状态报告指示报文出错,发送方只发送传送发生错误的报文。
选择重传协议,发送窗口和接收窗口都大于1 且小于等于(2^(k-1))。发送方仅重新传输发生错误的帧,并缓存错误帧之后发送的帧。与回退N相比,减少了出错帧之后正确的帧都要重传的开销。
混合ARQ

在混合ARQ中,数据报文传送到接收方之后,即使出错也不会被丢弃。接收方指示发送方重传出错报文的部分或者全部信息,将再次收到的报文信息与上次收到的报文信息进行合并,以恢复报文信息。
------解决思路----------------------
这种重传机制网上有源码示例的,自行搜索吧。