国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

485轉(zhuǎn)tcp通信控制設(shè)備,收發(fā)機(jī)制問題請教

h0r1z0n

由于RS485是半雙工通信,必須一發(fā)一收,發(fā)一個(gè)等待接收在處理。
也可能由于設(shè)備干擾或者gprs模塊不穩(wěn)定的問題,可能出現(xiàn)的問題是發(fā)出去的包,收不到的話我就需要重發(fā)。
比如onConnect時(shí)候,我發(fā)送一個(gè)命令,get_uid獲取設(shè)備,等待返回?cái)?shù)據(jù),這時(shí)候需要等待onMessage返回處理數(shù)據(jù),但是如果出現(xiàn)設(shè)備問題,我就無法接受數(shù)據(jù)無法在繼續(xù)下一步工作了,請問使用workerman的什么機(jī)制處理比較好,主要實(shí)現(xiàn)的我發(fā)送的命令等待接收,如果超過10s接收不到,我再次重發(fā),三次都收不到,我就斷開了等待客戶端重連。如果正常獲取uid之后,之后的執(zhí)行的機(jī)制也大體是這樣的,workerman使用什么方案能夠解決這個(gè)問題,謝謝。

5521 1 0
1個(gè)回答

walkor 打賞

tcp自帶重發(fā)機(jī)制,并且保證數(shù)據(jù)包按順序發(fā)給對端。
所以服務(wù)端通過相同的連接重發(fā)數(shù)據(jù)是沒有意義的。

比如服務(wù)端通過同一個(gè)socket連接給設(shè)備發(fā)送了A1數(shù)據(jù)包,設(shè)備沒收到,服務(wù)端又通過這個(gè)連接重新發(fā)了A2,后來又發(fā)了A3,如果A1收不到,那么后面重發(fā)的A2 和 A3肯定收不到。

這種情況主動權(quán)在客戶端,客戶端發(fā)起連接,發(fā)現(xiàn)一定時(shí)間沒收到服務(wù)端的數(shù)據(jù),可以選擇斷開重新連接服務(wù)端

  • 暫無評論
年代過于久遠(yuǎn),無法發(fā)表回答
??