本文来介绍一下应用层发生错误后如何处理。
标准中给出了一个总表:
客户端的错误处理:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e8c43564939f52843f5cf341fd412771.png)
服务器的错误处理
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/baa3cba984d26efefd2a0343813e7058.png)
总的原则是:
出错后客户端通常会主动重新发送诊断请求,而服务器通常不做处理,等待客户端重新请求。
下面我们来分析一下这个表。
1. 客户端
(1)诊断请求发送出错
客户端发送诊断请求的时候,网络层向应用层报告的发送结果为失败,这个时候客户端应等待P3CAN_Client_Phy(物理寻址)或P3CAN_Client_Fun(功能寻址)超时后,再次发送该诊断请求。非默认会话下应重启S3Client并发送3E报文。