CH579工作在DHCP模式时,socket重连怎样操作才比较标准?

CH579工作在DHCP模式,通过MQTT连接外界服务器,网络存在各种异常情况导致MQTT掉线,CH579如何重连比较可靠呢?

  1. 重连之前CH57xNET_SocketClose关闭原先Socket,参数用TCP_CLOSE_RST\TCP_CLOSE_ABANDON\TCP_CLOSE_NORMAL哪一个比较好?

  2. 是否需要关闭DHCP然后重新打开呢?CH57xNET_DHCPStop,CH57xNET_DHCPStart

  3. 关闭DHCP再打开之前,是否需要跟程序开始一样,对网络重新初始化一次呢?


    不知道怎样做显得优雅标准一些,什么时候只需要简单的关闭socket重新连接,什么时候需要重启DHCP,什么时候需要对网络库重新初始化,


    CH57xNET_SocketClose(SocketId, TCP_CLOSE_RST);
     
  CH57xNET_DHCPStop();
                
  GetMacAddr(MACAddr);
  CH57xNET_LibInit(IPAddr, GWIPAddr, IPMask, MACAddr);   /* 库初始化 */
                                                                              /* 检查错误 */
  NVIC_EnableIRQ(ETH_IRQn);
  
   while(CH57xInf.PHYStat < 2)
  {
    DelayMs(50);
  }
  osDelay(500);
  CH57xNET_DHCPStart(CH57xNET_DHCPCallBack);


(1)建议先抓包查清掉线原因,一般情况下使用TCP_CLOSE_RST,再换端口重连MQTT服务器。

(2)不需要关闭DHCP再打开,建议第一次DHCP成功后就直接关闭使能DHCP。

(3)建议每一次运行之后只对库初始化一次,若对库再次进行初始化之前请先对芯片进行复位。


只有登录才能回复,可以选择微信账号登录