关键看你怎样定义发送失败这个词的意思了。 比如,在网络发送数据的时候, 1.本地发送线程过载,某些数据未写入IO。 2.网络链路断开,部分数据无法到达目的地。 3.数据推送到对端,但是,对端未作处理。 当然,时间过程中可能还有其他情况,你可以认为是发送失败的。 1.发送过载的情况,一般都是通过创建多条连接并行传输,并且,采用阻塞队列进行流量控制。 2.网络链路故障,一般程序会抛出异常,进行异常处理就好。 当然,也可以辅以超时时间,进行程序调优。 3.一般的网络通信,你发送一个数据,对端都应该响应一个结果,表示,发送的数据我接收的搞定了。 因为,接收数据也会出现过载,数据格式错误,等等的状况,有个响应结果,对发送端也有利。 一般情况下,我们消息的重发机制,就是建立在这种“一问一答”式的通讯方式之上的。 如果发送了一个消息到对方,结果长时间没有应答信息,那么,我们认为,对方没收到消息, 之后我们重发上一次的消息,等待再次超时,一般而言,这种周期或者重发次数,我们定为3次。 连续3次都失败,说明这条通信线路不可靠,断开重新建立连接进行发送。
51,410
社区成员
86,068
社区内容
加载中
试试用AI创作助手写篇文章吧