WCH沁恒单片机
直播中

王芳

7年用户 1400经验值
私信 关注
[问答]

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

CH579工作在DHCP模式,通过MQTT连接外界服务器,网络存在各种异常情况导致MQTT掉线,CH579如何重连比较可靠呢?
  • 重连之前CH57xNET_SocketClose关闭原先Socket,参数用TCP_CLOSE_RSTTCP_CLOSE_ABANDONTCP_CLOSE_NORMAL哪一个比较好?
  • 是否需要关闭DHCP然后重新打开呢?CH57xNET_DHCPStop,CH57xNET_DHCPStart
  • 关闭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)

尹聪

2022-8-3 11:29:31
(1)建议先抓包查清掉线原因,一般情况下使用TCP_CLOSE_RST,再换端口重连MQTT服务器。
(2)不需要关闭DHCP再打开,建议第一次DHCP成功后就直接关闭使能DHCP。
(3)建议每一次运行之后只对库初始化一次,若对库再次进行初始化之前请先对芯片进行复位。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分