是這樣,我用CH32V208做了一個(gè)BLE網(wǎng)關(guān)。
為了保持網(wǎng)絡(luò)連接穩(wěn)定,以及在網(wǎng)關(guān)的參數(shù)變動(dòng)的時(shí)候網(wǎng)關(guān)會(huì)自動(dòng)修改。
我設(shè)計(jì)了如下過程:
1、開啟DHCP。
2、DHCP完成后執(zhí)行DNS解析,獲取服務(wù)器IP
3、創(chuàng)建TCP連接,進(jìn)行MQTT通信。
4、判斷WCHNET_SocketSend函數(shù)返回與發(fā)送數(shù)據(jù)的長(zhǎng)度是否一致,不一致重發(fā),發(fā)送次數(shù)達(dá)到限制后觸發(fā)重連。
5、為了防止沖突,重連前完成:WCHNET_DHCPStop、WCHNET_DNSStop、WCHNET_SocketClose(?TCP_CLOSE_ABANDON 模式 )
6、重復(fù)到步驟1
并且,WCHNET_HandleSockInt中:
檢測(cè)到SINT_STAT_TIM_OUT,我會(huì)執(zhí)行一遍WCHNET_SocketClose后執(zhí)行WCHNET_SocketCreat和WCHNET_SocketConnect。
檢測(cè)到SINT_STAT_DISCONNECT后執(zhí)行WCHNET_SocketClose
目前遇到的問題是:
重連時(shí) ( 此時(shí)已經(jīng)確認(rèn)執(zhí)行過?WCHNET_DHCPStop、WCHNET_DNSStop、WCHNET_SocketClose )
DHCP能完成重新獲取IP
DNS 時(shí)提示0x1E? (?Operation in progress )? ????????????
WCHNET_SocketCreat ????????時(shí)提示0x1D????(?Already connected )
WCHNET_SocketConnect????時(shí)提示0x17?????(?Connection closed )
是不是我執(zhí)行過程有問題?